求助
查看原帖
求助
735165
chenxi797楼主2024/1/29 15:20

为什么不对

#include <bits/stdc++.h>
using namespace std;
int a[105][105];
int n,m,cnt = 0;
queue <int> qx;
queue <int> qy;
void bfs(int x,int y)
{
	int xx[10] = {0,1,-1,0,0};
	int yy[10] = {0,0,0,-1,1};
	qx.push(1);
	qy.push(1);
	a[x][y] = 0;
	while (!qx.empty())
	{
		for (int i = 1;i <= 4;i++)
		{
			int dx = qx.front() + xx[i];
			int dy = qy.front() + yy[i];
			if (dx >= 1 && dx <= n && dy >= 1 && dy <= m && a[dx][dy] > 0)
			{
				qx.push(dx);
				qy.push(dy);
				a[dx][dy] = 0;
			}
		}
		qx.pop();
		qy.pop();
	}
}
int main()
{
	cin >> n >> m;
	for (int i = 1;i <= n;i++)
		for (int j = 1;j <= m;j++) scanf("%1d",&a[i][j]);
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= m;j++)
		{
			if (a[i][j] > 0)
			{
				cnt++;
				bfs(i,j);
			}
		}
	}
	cout << cnt;
}
2024/1/29 15:20
加载中...