Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Few500
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.003 second
Submitted On: 2026-03-21 14:52:29
#include<iostream>
#include<vector>
using namespace std;
int largest_island = 0, curr_island = 0;
int n, m;
vector<vector<int>> grid, visited;
int dx[] = {1,-1,0,0};
int dy[] = {0,0,-1,1};
void dfs(int x, int y){
if(visited[x][y]) return;
visited[x][y] = 1;
curr_island++;
largest_island = max(largest_island, curr_island);
for(int i=0; i<4; i++){
int nx = x + dx[i], ny = y + dy[i];
if(nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && grid[nx][ny])
dfs(nx, ny);
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
grid.resize(n, vector<int>(m));
visited.assign(n, vector<int>(m, 0));
for(int i=0; i<n; i++){
string l;
cin >> l;
for(int j=0; j<m; j++)
grid[i][j] = l[j] - '0';
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(visited[i][j] || grid[i][j] == 0) continue;
curr_island = 0;
dfs(i, j);
}
}
cout << largest_island << '\n';
return 0;
}