Nicole • 5天前
#include <bits/stdc++.h>
using namespace std;
int land[305][305];
int n, m;
void dfs(int x, int y) {
if (x < 1 || y < 1 || x > n || y > m || land[x][y] == 0)
return;
land[x][y] = 0;
dfs(x + 1, y);
dfs(x - 1, y);
dfs(x, y - 1);
dfs(x, y + 1);
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> land[i][j];
}
}
for (int i = 1; i <= n; i++) {
if (land[i][1] == 1) {
dfs(i, 1);
}
if (land[i][m] == 1) {
dfs(i, m);
}
}
for (int j = 1; j <= m; j++) {
if (land[1][j] == 1) {
dfs(1, j);
}
if (land[n][j] == 1) {
dfs(n, j);
}
}
int ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (land[i][j] == 1) {
ans++;
}
}
}
cout << ans;
return 0;
12}
评论:
请先登录,才能进行评论