93 #3WA求调
查看原帖
93 #3WA求调
1808854
whats_my_name楼主2025/8/2 15:51

代码如下

#include<bits/stdc++.h>
using namespace std;
struct ew{
	int x;
	int y;
	int te;
};
int n;
int xi[5]={1,0,0,0,-1};
int yi[5]={0,1,0,-1,0};
int maxx;
queue<ew>que;
bool b1[305][305];
int arr1[305][305];
int main(){
//	freopen("rainstar.in","r",stdin);
//    freopen("rainstar.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		int xl,yl,t;
		cin>>xl>>yl>>t;
		maxx=max(maxx,t);
		for(int j=0;j<=4;j++){
			if(xl+xi[j]>=0&&xl+xi[j]<=302&&yl+yi[j]>=0&&yl+yi[j]<302){
				if(arr1[xl+xi[j]][yl+yi[j]]!=0){
					arr1[xl+xi[j]][yl+yi[j]]=min(arr1[xl+xi[j]][yl+yi[j]],t);
				}else{
					arr1[xl+xi[j]][yl+yi[j]]=t;
				}
			}
		}
	}
	ew a1;
	a1.x=0;
	a1.y=0;
	a1.te=0;
	que.push(a1);
	while(1){
		if(que.empty()){
			cout<<-1;
			return 0;
		}
		if(arr1[que.front().x][que.front().y]==0){
			cout<<que.front().te;
			return 0;
		}
		if(que.front().te>=arr1[que.front().x][que.front().y]&&arr1[que.front().x][que.front().y]!=0){
			que.pop();
		}else{
			for(int i=0;i<=4;i++){
				if(que.front().x+xi[i]>=0&&que.front().x+xi[i]<=302&&que.front().y+yi[i]>=0&&que.front().y+yi[i]<=302&&b1[que.front().x+xi[i]][que.front().y+yi[i]]==0){
					ew b;
					b.x=que.front().x+xi[i];
					b.y=que.front().y+yi[i];
					b.te=que.front().te+1;
					que.push(b);
					b1[b.x][b.y]=1;
				}
			}
			que.pop();	
		}
	}
}

救救孩子吧qaq

2025/8/2 15:51
加载中...