Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPP]
Score: 100
User: Dormon
Problemset: เกาะที่ใหญ่ที่สุด
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-26 12:36:03
#include <iostream>
#include <vector>
#include <queue>
#include <functional>
using namespace std;
vector<pair<int, int>> dir = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<string> grid(n);
for (auto &s:grid)
cin >> s;
auto invalid = [&](int i, int j) -> bool {
return i < 0 || i >= n || j < 0 || j >= m || grid[i][j] == '0';
};
int ans = 0;
for (int i = 0;i < n;i++){
for (int j = 0;j < m;j++){
if (grid[i][j] == '1'){
int res = 0;
queue<pair<int, int>> q;
q.push({i, j});
while (!q.empty()){
auto [ii, jj] = q.front(); q.pop();
if (grid[ii][jj] == '0') continue;
grid[ii][jj] = '0';
res++;
for (auto [di, dj]:dir){
if (invalid(ii + di, jj + dj)) continue;
q.push({ii + di, jj + dj});
}
}
ans = max(ans, res);
}
}
}
cout << ans << '\n';
}