Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: sulinx

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-18 21:53:18

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

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n,m;
    cin >> n >> m;

    vector<string> grid(n);
    for(int i = 0;i<n;i++) cin >> grid[i];
    
    int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
    int maxarea = 0;

    for(int i = 0;i<n;i++){
        for(int j = 0;j<m;j++){
            if(grid[i][j] == '1'){
                int area = 0;
                queue<pair<int,int>> q;
                q.push({i,j});
                grid[i][j] = '0';

                while(!q.empty()){
                    auto [r,c] = q.front();
                    q.pop();
                    area++;

                    for(auto d : dir){
                        int nr = r + d[0],nc = c + d[1];
                        if(nr >= 0 && nr < n && nc >= 0 && nc < m && grid[nr][nc] == '1'){
                            grid[nr][nc] = '0';
                            q.push({nr,nc});
                        }
                    }
                }
                maxarea = max(maxarea,area);
            }
        }
    }
    cout << maxarea;   
}