Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: mantaggez
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-12 14:26:26
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
const int nx = 175;
int n, m, res, vs[nx][nx];
int di[] = {-1, 0, 0, 1};
int dj[] = {0, -1, 1, 0};
char grid[nx][nx];
queue<pii> q;
void bfs(int x, int y)
{
int area = 0;
q.push({x, y});
while(!q.empty())
{
auto [i, j] = q.front();
q.pop();
if(vs[i][j]) continue;
vs[i][j] = 1;
area++;
for(int d=0;d<4;d++)
{
int ni = di[d] + i, nj = dj[d] + j;
if(1 <= ni && ni <= n && 1 <= nj && nj <= m && grid[ni][nj] == '1')
q.push({ni, nj});
}
}
res = max(res, area);
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin >> n >> m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin >> grid[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(vs[i][j] || grid[i][j] == '0') continue;
bfs(i, j);
}
}
cout << res ;
return 0;
}