Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: kenmuay

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

Language: cpp

Time: 0.003 second

Submitted On: 2026-02-22 14:39:33

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

int n,m;
char c[170+5][170+5];
vector<vector<bool>> visited(170+5,vector<bool>(170+5, false));
int di[4] = {-1,0,1,0};
int dj[4] = {0,1,0,-1};

int main() {
    cin.tie(nullptr)->sync_with_stdio(0);
    cin >> n >> m;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            cin >> c[i][j];
        }
    }

    int mx=0;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            if(c[i][j] == '1' && !visited[i][j]){
                queue<pair<int, int>> q;
                q.push({i,j});
                visited[i][j] = true;
                int cnt=1;
                while(!q.empty()){
                    int ii = q.front().first;
                    int jj = q.front().second;
                    q.pop();
                    for(int k=0; k<4; k++){
                        int iii = ii + di[k];
                        int jjj = jj + dj[k];
                        if(visited[iii][jjj]) continue;
                        if(iii < 1 || iii>n || jjj < 1 || jjj>m) continue;
                        if(c[iii][jjj] == '0') continue;
                        cnt++;
                        q.push({iii,jjj});
                        visited[iii][jjj] = true;
                    }
                }
                mx = max(cnt,mx);
            }

        }
    }
    cout << mx;
}