输出不了ans,求调,玄关
查看原帖
输出不了ans,求调,玄关
865834
Wuski楼主2024/3/29 13:26
#include <bits/stdc++.h>
using namespace std;
char a[101][101];
int vis[101][101];

int dd[4][2] = {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
int n, m, ans = 0, head = 0, tail = 0;
struct node {
	int x, y;
} q[114514];
void bfs(int x, int y) {
	ans++;
	head = 0;
	tail = 1;
	q[tail].x = x;
	q[tail++].y = y;
	while (head < tail) {

		vis[x][y] = 1;
		for (int i = 0; i < 4; i++) {
			int xx = dd[i][0] + q[head].x;
			int yy = dd[i][1] + q[head].y;
			if (a[xx][yy] != '0' && vis[xx][yy] == 0) {
				q[++tail].x = xx;
				q[tail].y = yy;
			}
		}
		head++;
	}
}
int main() {
	cin >> n >> m;
	memset(vis, 0, sizeof(vis));
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cin >> 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') {
				bfs(i, j);
//				cout << 1 << endl;
			}
		}
	}
	cout << ans;
	return 0;
}
2024/3/29 13:26
加载中...