Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Hxluk.ka

Problemset: เกาะที่ใหญ่ที่สุด

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-07 23:05:50

#include <iostream>
#include <queue>
#include <utility>
using namespace std;
const int na=173, dir[4][2]={{1,0}, {0,1}, {-1,0}, {0,-1}};
char t;
int n, mp[na][na], mx, vs[na][na], m, cnt;
queue<pair<int, int>> q;
int main() {
    cin.tie(0)->sync_with_stdio(0);

    cin>>n>>m;
    for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) cin>>t, mp[i][j]=t-'0';

    for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) {
        if (vs[i][j]||!mp[i][j]) continue;
        cnt=1;
        vs[i][j]=1;
        q.push({i, j});
        while (!q.empty()) {
            auto [x,y]=q.front(); q.pop();

            for (int k=0; k<4; k++) {
                int nx=x+dir[k][0], ny=y+dir[k][1];
                if (vs[nx][ny]||!mp[nx][ny]) continue;
                vs[nx][ny]++;
                cnt++;
                q.push({nx, ny});
            }
        }
        mx=max(mx, cnt);
    }
    cout<<mx;
}