Submission

Status:

[PPP-SSSSSSSSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: Seng

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-21 10:23:43

#include <bits/stdc++.h>
using namespace std;
queue<pair<int, int>> q;

int main(){

    int n, m;cin >> n >> m;
    char a[n+5][m+5];
    int dx[4] = {1, 0, -1, 0};
    int dy[4] = {0, 1, 0, -1};
    int mx = INT_MIN;
    bool vis[n+5][m+5];

    for(int i = 0; i <= n+1; i++){
        for(int j = 0; j <= m+1; j++){
            a[i][j] = '0';
            vis[i][j] = false;
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin >> a[i][j];
        }
    }

    for(int i = 1; i<= n; i++){
        for(int j = 1; j <= m; j++){
            if(a[i][j] == '0') continue;
            int cnt = 0;
            q.push({j, i});
            while(!q.empty()){
                int x = q.front().first;
                int y = q.front().second;
                cnt++;
                //cout << "x = " << x << ' ' << "y = " << y << '\n';
                q.pop();
                vis[y][x] = true;

                for(int k = 0; k < 4; k++){
                    int xx = x+dx[k];
                    int yy = y+dy[k];
                    
                    if(a[yy][xx] == '0') continue;
                    if(xx < 1 || yy < 1 || xx > m || yy > m) continue;
                    if(vis[yy][xx]) continue;
                    q.push({xx, yy});
                    a[yy][xx] = '0';
                    vis[yy][xx] = true;
                }
            }
            mx = max(mx, cnt);
        }
    }

    cout << mx;
    


    return 0;
}