刚学bfs 求助大佬
查看原帖
刚学bfs 求助大佬
462061
NGC5468jyz楼主2021/1/31 13:15

10分答案

#include<bits/stdc++.h>
using namespace std;
int a,b;
char ma[101][101];
bool visit[101][101];
void bfs(int n,int m)
{
	visit[n][m]=1;
	int x,y,xx,yy,head=0,tail=1,quex[10001],quey[10001],dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
	quex[tail]=n;
	quey[tail]=m;
	while(head<tail)
	{
		x=quex[++head];
		y=quey[head];
		for(int p=0;p<4;p++)
		{
			xx=x+dx[p];
			yy=y+dy[p];
			if(xx<0||xx>=a||y<0||y>=b)continue;
			visit[xx][yy]=1;
			quex[++tail]=xx;
			quey[tail]=yy;
		}
	}
} 
int main()
{
	int answer=0;
	cin>>a>>b;
	for(int i=0;i<a;i++)cin>>ma[i];
	for(int i=0;i<a;i++)
	{
		for(int j=0;j<b;j++)
		{
			if(ma[i][j]!=0&&visit[i][j]==0)
			{
				answer++;
				bfs(i,j);
			}
		}
	}
	cout<<answer;
	return 0;
}

Orz

2021/1/31 13:15
加载中...