Submission

Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]

Score: 100

User: MiyaZaki1072

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-04-16 19:35:31

#include <bits/stdc++.h>
using namespace std;
bool a[200][200];
int n,m;
#define f first
#define s second
const int di[] = {0,0,1,-1};
const int dj[] = {1,-1,0,0};
int bfs(int i,int j){
    queue<pair<int,int>>qu;
    a[i][j]=0;
    qu.push({i,j});
    int ret = 1;
    while(qu.size()){
        int i = qu.front().f,j=qu.front().s;
        qu.pop();
        for(int k=0;k<4;k++){
            int ii =i+di[k],jj=j+dj[k];
            if(ii<1||ii>n||jj<1||jj>m)continue;
            if(a[ii][jj]){
                ret++;
                a[ii][jj]=0;
                qu.push({ii,jj});
            }
        }
    }
    return ret;
}
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        string x;cin>>x;
        for(int j=1;j<=m;j++){
            a[i][j]=x[j-1]-'0';
        }
    }
    int ans = 0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]){
                ans = max(ans,bfs(i,j));
            }
        }
    }
    cout<<ans;
}