求助
查看原帖
求助
354972
QiaoHongYi楼主2020/11/1 16:50
#include <iostream>
#include <cstdio>
using namespace std;
int book[1001][1001], a[1001][1001], n, m, l;
int next[2][4] = {{1, -1, 0, 0}, {0, 0, 1, -1}};
struct q { int x, y; };
void bfs(int xxx, int yyy)
{
	l = l + 1;
	q qq[1001];
	int head = 0, tail = 1;
	qq[0].x = xxx; qq[0].y = yyy;
	while (head != tail)
	{
		for (int i = 0; i < 4; i++)
		{
			qq[tail].x = qq[head].x + next[0][i];
			qq[tail].y = qq[head].y + next[1][i];
			int xx = qq[tail].x, yy = qq[tail].y;
			if (xx <= n && yy <= m && xx >= 1 && yy >= 1 && a[xx][yy] != 0 && book[xx][yy] != 1)
			{
				book[xx][yy] = 1;
				tail++;
			}
		}
		head++;
	}
}
int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			char z;
			scanf("%c", &z);
			a[i][j] = int(z) - int('0');
		}
		scanf("\n");
	}
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
		{
			if (book[i][j] == 1) continue;
			if (a[i][j] > 0) bfs(i, j);
			book[i][j] = 1;
		}
	cout << l << endl;
	return 0;
}
2020/11/1 16:50
加载中...