Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: kenmuay
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2026-02-22 14:39:33
#include <bits/stdc++.h>
using namespace std;
int n,m;
char c[170+5][170+5];
vector<vector<bool>> visited(170+5,vector<bool>(170+5, false));
int di[4] = {-1,0,1,0};
int dj[4] = {0,1,0,-1};
int main() {
cin.tie(nullptr)->sync_with_stdio(0);
cin >> n >> m;
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
cin >> c[i][j];
}
}
int mx=0;
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
if(c[i][j] == '1' && !visited[i][j]){
queue<pair<int, int>> q;
q.push({i,j});
visited[i][j] = true;
int cnt=1;
while(!q.empty()){
int ii = q.front().first;
int jj = q.front().second;
q.pop();
for(int k=0; k<4; k++){
int iii = ii + di[k];
int jjj = jj + dj[k];
if(visited[iii][jjj]) continue;
if(iii < 1 || iii>n || jjj < 1 || jjj>m) continue;
if(c[iii][jjj] == '0') continue;
cnt++;
q.push({iii,jjj});
visited[iii][jjj] = true;
}
}
mx = max(cnt,mx);
}
}
}
cout << mx;
}