求助!萌新查不出bfs的问题
  • 板块P1141 01迷宫
  • 楼主wuyouxuan
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/21 22:46
  • 上次更新2023/10/27 18:59:50
查看原帖
求助!萌新查不出bfs的问题
546800
wuyouxuan楼主2022/7/21 22:46
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int n,mp[1005][1005],m;bool p[1005][1005];
struct zb{
	int x,y;
}q[1000005];
int mov[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void bfs(int x,int y)
{
	int sum=1;
	memset(p,true,sizeof(p));
	int f=1,r=1,X,Y;
	q[f].x=x;
	q[f].y=y;
	while(f<=r)
	{
		
		X=q[f].x,Y=q[f].y;
		p[X][Y]=false;
		for(int i=0;i<4;i++)
		{
			int xx=X+mov[i][0];
			int yy=Y+mov[i][1];
			if(p[xx][yy]==true&&xx>=1&&xx<=n&&yy>=1&&yy<=n&&((mp[xx][yy]==0&&mp[X][Y]==1)||(mp[xx][yy]==1&&mp[X][Y]==0)))
			{
				q[++r].x=xx;
				q[r].y=yy;
				sum=sum+1;
				p[xx][yy]=false;
			}
		}
		f++;
	}
	cout<<sum<<endl;
	
}
int main(){
	char a;
	cin>>n>>m;
	int sx,sy;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a;
			if(a==1) mp[i][j]=1;
			else mp[i][j]=0;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>sx>>sy;
		bfs(sx,sy);
	}
	return 0;
}

2022/7/21 22:46
加载中...