Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Score: 100
User: MiyaZaki1072
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.002 second
Submitted On: 2025-04-16 19:35:31
#include <bits/stdc++.h>
using namespace std;
bool a[200][200];
int n,m;
#define f first
#define s second
const int di[] = {0,0,1,-1};
const int dj[] = {1,-1,0,0};
int bfs(int i,int j){
queue<pair<int,int>>qu;
a[i][j]=0;
qu.push({i,j});
int ret = 1;
while(qu.size()){
int i = qu.front().f,j=qu.front().s;
qu.pop();
for(int k=0;k<4;k++){
int ii =i+di[k],jj=j+dj[k];
if(ii<1||ii>n||jj<1||jj>m)continue;
if(a[ii][jj]){
ret++;
a[ii][jj]=0;
qu.push({ii,jj});
}
}
}
return ret;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
string x;cin>>x;
for(int j=1;j<=m;j++){
a[i][j]=x[j-1]-'0';
}
}
int ans = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]){
ans = max(ans,bfs(i,j));
}
}
}
cout<<ans;
}