染色
查看原帖
染色
742157
ZYK_luogu楼主2023/5/20 20:30

染色做法,不知道哪里错了

#include <iostream>
using namespace std;
#define maxn 105

int n, m;
int a[maxn][maxn];
int sign[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int cnt = 0;

void dfs(int x, int y) {
	if(a[x][y])
		cnt ++;
	for(int i = 0; i < 4; i ++) {
		int dx = x + sign[i][0], dy = y + sign[i][1];
		if(a[dx][dy] != 0)
			a[dx][dy] = 0, dfs(dx, dy);
	}
//	printf("x = %d, y = %d, ans = %d\n", x, y, cnt);
}

int main() {
	cin >> n >> m;
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= m; j ++) {
			char c;
			cin >> c;
			a[i][j] = c - '0';
		}
	for(int i = 1; i <= n; i ++)
		for(int j = 1; j <= m; j ++)
			dfs(i, j);
	cout << cnt << endl;
	return 0;
}

2023/5/20 20:30
加载中...