wa两个点,没找到出错点,80分
查看原帖
wa两个点,没找到出错点,80分
1228836
destiny_w楼主2024/10/2 17:05
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int od[N][N];//传染时间 
queue<pair<int ,int> > q;//最初当前任务 
pair<int ,int> task[N*N];//存储领主位置 
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
int n,m,a,b;
int vis[N][N];
int main(){
	
	cin>>m>>n>>a>>b;
	int x,y;
	for(int i=1;i<=a;++i){//先把传染源加进去 
		cin>>x>>y;
		q.push({x,y});
		vis[x][y]=1;
	}
	for(int i=1;i<=b;++i){//最后输出领主感染时间 
		cin>>x>>y;
		task[i]={x,y};
		
	}
	while(!q.empty()){
		pair<int ,int> nz=q.front();
		q.pop();
		for(int i=0;i<4;++i){
			int xx=nz.first+dx[i];
			int yy=nz.second+dy[i];
			if(xx<=n && xx>=1 && yy<=m  && yy>=1 && !vis[xx][yy]){
				vis[xx][yy]=1;
				od[xx][yy]=od[nz.first][nz.second]+1;
				q.push({xx,yy});
			}
		
	}
	}
	for(int i=1;i<=b;++i){
		cout<<od[task[i].first][task[i].second]<<endl;
	}
	return 0;
	
	
	
}
2024/10/2 17:05
加载中...