Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: s0m30n3

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-03-18 22:12:08

#include<iostream>
#include<vector>
#include<queue>
using namespace std;

char table[200][200];
bool vis[200][200];

int dx[4] = {-1,1,0,0};
int dy[4] = {0,0,-1,1};

int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>table[i][j];
        }
    }
    int max_area = 0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(table[i][j]=='1'&&!vis[i][j]){
                int area = 1;
                queue<pair<int,int>> q;
                q.push({i,j});
                vis[i][j]=true;
                while(!q.empty()){
                    auto [u,v] = q.front();
                    q.pop();
                    for(int k=0;k<4;k++){
                        int ny=u+dy[k];
                        int nx=v+dx[k];
                        if(ny<0||nx<0||ny>=n||nx>=m) continue;
                        if(vis[ny][nx]) continue;
                        if(table[ny][nx]=='0') continue;
                        vis[ny][nx]=true;
                        q.push({ny,nx});
                        area++;
                    }
                }
                max_area = max(max_area , area);
            }
        }
    }

    cout << max_area;
}