1322

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}

评论:

请先登录,才能进行评论