Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Score: 100
User: mydKN
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.004 second
Submitted On: 2025-03-31 00:11:17
#include<bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
const int maxn = 180;
const int di[] = {0, 0, -1, 1};
const int dj[] = {1, -1, 0, 0};
int n, m;
bool mp[maxn][maxn];
vector<pii> vec;
queue<pii> qu;
int res = 0;
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> n >> m;
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
char x;
cin >> x;
mp[i][j] = (x - '0');
if(mp[i][j]) vec.emplace_back(i, j);
}
}
for(auto e : vec){
if(!mp[e.first][e.second]) continue;
qu.emplace(e.first, e.second);
int cnt = 0;
while(!qu.empty()){
auto [ui, uj] = qu.front();
qu.pop();
if(!mp[ui][uj]) continue;
mp[ui][uj] = 0;
++cnt;
for(int i=0;i<4;++i){
int vi = ui + di[i];
int vj = uj + dj[i];
if(vi >= 0 && vj >= 0 && vi < n && vj < m && mp[vi][vj]){
qu.emplace(vi, vj);
}
}
}
// for(int i=0;i<n;++i){
// for(int j=0;j<m;++j){
// cout << mp[i][j];
// }
// cout << "\n";
// }
// cout << cnt << "\n";
res = max(res, cnt);
}
cout << res;
}