Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: skibididopdop

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-02-26 16:14:43

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n,m;
    int dx[]={-1,0,1,0};
    int dy[]={0,1,0,-1};
    cin>>n>>m;
    vector <vector <char>> v(n,(vector<char>(m)));
    vector <vector <bool>> check(n,(vector<bool>(m,0)));
    for (int i=0;i<n;i++){
        for (int j=0;j<m;j++){
            cin>>v[i][j];
        }
    }

    queue <pair<int,int>> q;
    vector <int> mx;
    for (int i=0;i<n;i++){
        for (int j=0;j<m;j++){
            if (v[i][j]=='1'){
                if (check[i][j]==true) continue;
                q.push({i,j});
                check[i][j]=1;
                int sum=1;
                while (!q.empty()) {
                    int x=q.front().first;
                    int y=q.front().second;
                    //cout<<x<<" "<<y<<"\n";
                    q.pop();
                    for (int k=0;k<4;k++){
                        int uu=x+dx[k];
                        int vv=y+dy[k];
                        if (uu>=0&&vv>=0&&uu<=n-1&&vv<=m-1&&v[uu][vv]=='1'&&check[uu][vv]!=1){
                            q.push({uu,vv});
                            check[uu][vv]=1;
                            sum++;
                        }
                    }
                }
                mx.push_back(sum);
            }
        }
    }
    int ans=0;
    for (int i=0;i<mx.size();i++){
        if (mx[i]>ans){
            ans=mx[i];
        }
    }
    cout<<ans;
}