HELLP!
查看原帖
HELLP!
516242
chenhongyu20100506楼主2021/12/16 13:16

本人打了bfs不知道为什么错了(求帮助!!!)

#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,x,y;
bool vis[505][505];
struct node{
	int x,y,step;
};
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
queue<node> q;
int xi[505],yi[505],ans[505][505];
void bfs(){
	while(!q.empty()){
		node t=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int nx=t.x+dx[i];
			int ny=t.y+dy[i];
			if(1<=nx&&nx<=n&&1<=ny&&ny<=m&&!vis[nx][ny]){
				vis[nx][ny]=true;
				ans[nx][ny]=t.step+1;
				node nt={nx,ny,t.step+1};
				q.push(nt);
			}
		}
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>m>>a>>b;
	for(int i=1;i<=a;i++){
		cin>>x>>y;
		ans[x][y]=0;
		vis[x][y]=true;
		node st={x,y,0};
		q.push(st);
	}
	for(int i=1;i<=b;i++){
		cin>>xi[i]>>yi[i];
	}
	bfs();
	for(int i=1;i<=b;i++){
		cout<<ans[xi[i]][yi[i]]<<endl;
	}
	return 0;
}
2021/12/16 13:16
加载中...