不会BFS的蒟蒻求助
  • 板块P1141 01迷宫
  • 楼主Yuzzzu
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/22 23:52
  • 上次更新2023/10/27 06:23:43
查看原帖
不会BFS的蒟蒻求助
510311
Yuzzzu楼主2022/10/22 23:52
#include<iostream>
using namespace std;
int n,m,x,y,ans,next[4][4]={{1,0},{0,1},{0,-1},{-1,0}};
bool map[1001][1001];
char str;
struct node{
	int x2,y2;
}que[100001];
void bfs(int a,int b){
	int head=1,tail=1,vis[1001][1001];
	ans=1;
	que[tail].x2=a;
	que[tail].y2=b;
	bool k=map[a][b];
	tail++;
	vis[a][b]=1;
	while(tail>head){
		for(int i=0;i<4;i++){
			int xx=que[head].x2+next[i][0];
			int yy=que[head].y2+next[i][1];
			
			if(xx>=1 && xx<=n &&yy>=1 && yy<=n &&vis[xx][yy]==0 && k!=map[xx][yy]){
				vis[xx][yy]=1;
				que[tail].x2=xx;
				que[tail].y2=yy;
				k=map[xx][yy];
				tail++;
				ans++;
			}
		}
		head++;
	}
}
int main(){
    //freopen(" ","r",stdin);
    //freopen(" ","w",stdout);
	cin >> n >> m; 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin >> str;
			if(str=='1') map[i][j]=1;
			else map[i][j]=0;
		}
			
	}
		
	for(int i=1;i<=m;i++){
		cin >> x >> y;
		bfs(x,y);
		cout << ans;
	}
		
	
    //fclose(stdin);
    //fclose(stdout);
	return 0;
}

2022/10/22 23:52
加载中...