30pts求条
查看原帖
30pts求条
998963
封禁用户楼主2025/2/7 15:29
#include <bits/stdc++.h>
using namespace std;
int n, m, ans, a[110][110];
int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
bool vis[110][110];

void dfs(int x, int y) {
	vis[x][y] = 1;
	for (int i = 0; i < 4; i ++) {
		int tx = x + dx[i], ty = y + dy[i];
		if (vis[tx][ty] == 1 || a[tx][ty] == 0) return;
		dfs(tx, ty);
	}
}

int main() {
	scanf("%d %d", &n, &m);
	for (int i = 1; i <= n; i ++) 
		for (int j = 1; j <= m; j ++) 
			scanf("%d", &a[i][j]);
	for (int i = 1; i <= n; i ++) {
		for (int j = 1; j <= m; j ++) {
			if (vis[i][j] == 0 && a[i][j] != 0) {
				ans ++;
				dfs(i, j);
			}
		}
	}
	cout << ans;
	return 0;
}
2025/2/7 15:29
加载中...