Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: sulinx
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.005 second
Submitted On: 2026-02-18 21:42:56
#include <bits/stdc++.h>
using namespace std;
int dfs(vector<vector<int>>& grid, vector<vector<bool>>& visited, int r, int c) {
int rows = grid.size(), cols = grid[0].size();
if (r < 0 || r >= rows || c < 0 || c >= cols || visited[r][c] || grid[r][c] == 0) {
return 0;
}
visited[r][c] = true;
return 1 + dfs(grid, visited, r + 1, c) + dfs(grid, visited, r - 1, c)
+ dfs(grid, visited, r, c + 1) + dfs(grid, visited, r, c - 1);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n,m;
int maxarea = 0;
string tmp;
cin >> n >> m;
vector<vector<int>> grid(n,vector<int>(m));
vector<vector<bool>> visited(n,vector<bool>(m));
for(int i = 0;i<n;i++){
cin >> tmp;
for(int j = 0;j<m;j++){
grid[i][j] = tmp[j] - '0';
}
}
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
if(grid[i][j] == 1 && !visited[i][j]){
maxarea = max(maxarea,dfs(grid,visited,i,j));
}
}
}
cout << maxarea;
}