#9~#14TLE求助!
查看原帖
#9~#14TLE求助!
760776
zzy_zzy楼主2023/3/25 17:26

RT.代码如下:

#include<bits/stdc++.h>
using namespace std;
int ti[310][310],step[310][310],dx[5]={1,-1,0,0,0},dy[5]={0,0,1,-1,0},ans=-1;
queue<pair<int,int> >q;
void bfs(){
	q.push(make_pair(1,1));
	step[1][1]=0;
	while(q.size()){
		int x=q.front().first,y=q.front().second;
		q.pop();
		for(int i=0;i<4;i++){
			int xx=x+dx[i];
			int yy=y+dy[i];
			if(xx>0&&xx<=301&&yy>0&&yy<=301&&step[x][y]+1<ti[xx][yy]){
				q.push(make_pair(xx,yy));
				step[xx][yy]=step[x][y]+1;
				if(ti[xx][yy]==INT_MAX){
					ans=step[xx][yy];
					return;
				}
			}
		}
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=310;i++){
		for(int j=1;j<=310;j++){
			ti[i][j]=INT_MAX;
		}
	}
	for(int i=1;i<=n;i++){
		int x,y,time;
		cin>>x>>y>>time;
		x++,y++;
		for(int j=0;j<5;j++){
			int xx=x+dx[j];
			int yy=y+dy[j];
			ti[xx][yy]=min(ti[xx][yy],time);
		}
	}
	bfs();
	cout<<ans;
	return 0;
}
2023/3/25 17:26
加载中...