queue push 出错,求助
查看原帖
queue push 出错,求助
444267
cui_can楼主2021/7/19 10:55
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int n,m,a,b; 
int die[505][505];
int dx[]={-1,0,0,1};
int dy[]={0,-1,1,0};
struct node{
	int x,y,step;
};
queue <node> q;
int main(){
	scanf("%d%d%d%d",&n,&m,&a,&b);
	for(int i=1;i<=505;i++)
		for(int j=1;j<=505;j++)
			die[i][j]=0x3fffffff;
	int xx,yy;
	for(int i=1;i<=a;i++){
		scanf("%d%d",&xx,&yy);
		node p;p.x=xx,p.y=yy,p.step=0;
		q.push(p);      
	}
	while(!q.empty()){
		node now=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			node t;
			t.x=now.x+dx[i],t.y=now.y+dy[i],t.step=now.step+1;
			while(t.x<1||t.x>n||t.y<1||t.y>m)continue;
			if(t.step<die[t.x][t.y]){
				die[t.x][t.y]=t.step;
				q.push(t);
			}
		}
	}
	for(int i=1;i<=b;i++){
		scanf("%d%d",&xx,&yy);
		printf("%d\n",die[xx][yy]);
	}
	return 0;
}
2021/7/19 10:55
加载中...