Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Darleneee93
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-05 19:59:37
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<vector<bool>> visited;
int dx[] = {0,0,-1,1};
int dy[] = {1,-1,0,0};
vector<string> grid;
int N,M;
int bfs(int si,int sj){
queue<pair<int,int>> q;
q.push({si,sj});
visited[si][sj] = true;
int count = 0;
while (!q.empty()){
auto [i,j] = q.front();
q.pop();
count++;
for (int d=0;d<4;d++){
int ni = i + dx[d];
int nj = j + dy[d];
if (ni >=0 && ni < N && nj >=0 && nj < M && !visited[ni][nj] && grid[ni][nj] =='1'){
visited[ni][nj] = true;
q.push({ni,nj});
}
}
}
return count;
}
int main(){
cin >> N >> M;
grid.resize(N);
for (int i=0;i < N ; i++){
cin >> grid[i];
}
int ans = 0;
visited.assign(N,vector<bool>(M,false));
for (int i=0;i<N;i++){
for (int j=0;j<M;j++){
if (!visited[i][j] && grid[i][j] =='1'){
ans = max(ans,bfs(i,j));
}
}
}
cout << ans;
return 0;
}