Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Kikii

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-03-11 10:10:19

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

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n,k;
    cin >> n >> k;
    vector<vector<char>> grid(n, vector<char> (k));
    vector<vector<bool>> vis(n, vector<bool> (k,false));
    for(int i = 0; i < n; i ++){
        for(int j = 0; j < k; j ++){
            cin >> grid[i][j];
            if (grid[i][j] == '0'){
                vis[i][j] = true;
            }
        }
    }
    int ma = 0;
    int dr[] = {-1, 1, 0, 0};
    int dc[] = {0, 0, -1, 1};
    for(int i = 0; i < n; i ++){
        for(int j = 0; j < k; j ++){ 
            if (vis[i][j] == false){
                int idx = 0;
                queue<pair<int, int>> q;
                q.push({i, j});
                vis[i][j] = true;
                while(!q.empty()){
                    pair<int, int> curr = q.front();
                    q.pop();
                    idx++;
                    for(int d = 0; d < 4; d++){
                        int ni = curr.first + dr[d];
                        int nj = curr.second + dc[d];
                        if(ni >= 0 && ni < n && nj >= 0 && nj < k && !vis[ni][nj]){
                            vis[ni][nj] = true;
                            q.push({ni, nj});
                        }
                    }
                }
                if (idx > ma){
                    ma = idx;
                }
            }
        }
    }
    cout << ma;
}