Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: syndrxme

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-14 09:46:49

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

int dr[] = {-1,1,0,0};
int dc[] = {0,0,-1,1};
int n,m;
int dfs(int r, int c, vector<vector<int>>& grid){
    int cou=1;
    grid[r][c]=0;
    for(int i=0;i<4;i++){
        int nr=r+dr[i];
        int nc =c+dc[i];
        if(nr>=0 && nr<n && nc>=0 && nc<m && grid[nr][nc]==1){
            cou+=dfs(nr,nc,grid);
        }
    }
    return cou;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m;
    vector<vector<int>> grid(n,vector<int>(m));
    for(int i=0;i<n;i++){
        string s;
        cin>>s;
        for(int j=0;j<m;j++){
            grid[i][j] = s[j]-'0';
        }
    }
    int mx=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(grid[i][j]==1){
                queue<pair<int,int>> q;
                int cal=0;
                q.push({i,j});
                grid[i][j]=0;
                while(q.empty()==false){
                    auto t = q.front();
                    q.pop();
                    cal++;
                    int r= t.first;
                    int c = t.second;
                    for(int k=0;k<4;k++){
                        int nr = r+ dr[k];
                        int nc = c+dc[k];
                        if(nr>=0 && nr<n && nc>=0 && nc<m && grid[nr][nc]==1){
                            q.push({nr,nc});
                            grid[nr][nc]=0;
                        }
                    }
                }
                mx = max(cal,mx);
            }
        }
    }
    cout<<mx;
    // cout<<dfs(0,2,grid);
    return 0;
}