Submission

Status:

[PPPPPPPPPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Darleneee93

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

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-05 19:59:37

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

vector<vector<bool>> visited;
int dx[] = {0,0,-1,1};
int dy[] = {1,-1,0,0};
vector<string> grid;
int N,M;

int bfs(int si,int sj){
  queue<pair<int,int>> q;
  q.push({si,sj});
  visited[si][sj] = true;
  int count = 0;

  while (!q.empty()){
    auto [i,j] = q.front();
    q.pop();
    count++;

    for (int d=0;d<4;d++){
      int ni = i + dx[d];
      int nj = j + dy[d];

      if (ni >=0 && ni < N && nj >=0 && nj < M && !visited[ni][nj] && grid[ni][nj] =='1'){
        visited[ni][nj] = true;
        q.push({ni,nj});

      }
    }
  }
  return count;

}

int main(){
  cin >> N >> M;

  grid.resize(N);
  for (int i=0;i < N ; i++){
    cin >> grid[i];
  }

  int ans = 0;

  visited.assign(N,vector<bool>(M,false));

  for (int i=0;i<N;i++){
    for (int j=0;j<M;j++){
      if (!visited[i][j] && grid[i][j] =='1'){
        ans = max(ans,bfs(i,j));
      }
    }
  }
  cout << ans;
  return 0;
}