只有28分,求助大佬!求调!求调!
查看原帖
只有28分,求助大佬!求调!求调!
800751
acmwriter楼主2023/6/1 23:50
#include<bits/stdc++.h>
using namespace std;
int dx[5]={0,0,0,1,-1};
int dy[5]={0,1,-1,0,0};
int a[305][305],b[305][305];
struct node{
	int x,y,sum;
};
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		int c,d,t;
		cin>>c>>d>>t;
		for(int j=0;j<5;j++){
			if(c+dx[j]>=0&&c+dx[j]<=300&&d+dy[j]>=0&&d+dy[j]<=300){
				a[c+dx[j]][d+dy[j]]=t;
			}
		}
	}
	queue<node>q;
	node F={0,0,0};
	b[0][0]=1;
	q.push(F);
	while(!q.empty()){
		node N=q.front();
		q.pop();
		if(a[N.x][N.y]==0){
			cout<<N.sum;
			return 0;
		}
		for(int i=1;i<5;i++){
			int sx=N.x+dx[i];
			int sy=N.y+dy[i];
			if(sx>=0&&sx<=300&&sy>=0&&sy<=300&&!b[sx][sy]){
				if(N.sum+1<a[sx][sy]){
				node E={sx,sy,N.sum+1};
				b[sx][sy]=1;
				q.push(E);
				}
				if(a[sx][sy]==0){
					cout<<N.sum+1;
					return 0;
				}
			}
		}
	}
	cout<<-1;
	return 0;
}
2023/6/1 23:50
加载中...