Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Score: 100
User: Pera
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.005 second
Submitted On: 2025-03-26 11:16:14
#include <bits/stdc++.h>
using namespace std;
int dfs(vector<vector<int>>&grid, int rstart, int cstart) {
if (rstart < 0 || rstart >= grid.size() || cstart < 0 || cstart >= grid[0].size()) return 0;
// Base case
if (grid[rstart][cstart] == 0) return 0;
grid[rstart][cstart] = 0;
int size = 1;
size += dfs(grid, rstart + 1, cstart);
size += dfs(grid, rstart - 1, cstart);
size += dfs(grid, rstart, cstart + 1);
size += dfs(grid, rstart, cstart - 1);
return size;
}
int largestisland(vector<vector<int>>& grid, int n, int m) {
int maxn = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (grid[i][j] == 1) {
maxn = max(dfs(grid, i, j), maxn);
}
}
}
return maxn;
}
int main() {
ios_base::sync_with_stdio(false);
int n, m; cin >> n >> m;
vector<vector<int>> grid(n, vector<int>(m));
for (int i = 0; i < n; ++i) {
string line; cin >> line;
for (int j = 0; j < m; ++j) {
grid[i][j] = line[j] - '0';
}
}
cout << largestisland(grid, n, m) << '\n';
}