Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: devilpoohs
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-06 12:06:01
#include<bits/stdc++.h>
using namespace std;
int di[4]={0,0,1,-1};
int dj[4]={1,-1,0,0};
int n,m;
bool vis[171][171];
int dfs(int i,int j){
// cout<<'a';
vis[i][j]=true;
int cnt=1;
for(int k=0;k<4;k++){
int ni=i+di[k];
int nj=j+dj[k];
// cout<<k<<','<<di[k]<<','<<dj[k]<<'\n';
if(ni>=0 and nj>=0 and ni<n and nj<m and vis[ni][nj]==false){
cnt+=dfs(ni,nj);
}
}
return cnt;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
char a;
cin>>a;
vis[i][j]=1^(a-'0');
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
// if(vis[i][j]==true){
// cout<<'1';
// }else cout<<'0';
if(!vis[i][j]){
// cout<<i<<','<<j<<'\n';
ans=max(ans,dfs(i,j));
// cout<<'\n';
}
}
// cout<<'\n';
}
cout<<ans;
return 0;
}
/*
4 4
0011
0000
0111
1100
*/