Submission

Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]

Score: 100

User: hmmm

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

Language: cpp

Time: 0.003 second

Submitted On: 2025-03-25 18:20:26

#include<bits/stdc++.h>
using namespace std;
const int N=200;
char a[N][N];
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};

int main(){
    ios::sync_with_stdio(0); cin.tie(0);
    int n,m,mx=0;
    cin >> n >> m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin >> a[i][j];
        }
    }
    queue<array<int,2>> q;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            int cnt=1;
            if(a[i][j]=='1'){
                a[i][j]='0';
                q.push({i,j});
                while(!q.empty()){
                    auto x=q.front()[0];
                    auto y=q.front()[1];
                    q.pop();
                    for(int i=0;i<4;i++){
                        int xx=x+dx[i];
                        int yy=y+dy[i];
                        if(xx<1 || yy<1 || xx>n || yy>m) continue;
                        if(a[xx][yy]=='1'){
                            q.push({xx,yy});
                            a[xx][yy]='0';
                            cnt++;
                        }
                    }
                }
                mx=max(mx,cnt);
            }
        }
    }
    cout << mx;
}