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;
}