救,大佬救
  • 板块灌水区
  • 楼主我是歌者
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/30 20:21
  • 上次更新2023/11/3 06:51:30
查看原帖
救,大佬救
566190
我是歌者楼主2023/7/30 20:21

题目U283553 我的代码不开O2就RE,开了只过一个点

#include<bits/stdc++.h>
using namespace std;
int mapp[3010][3010],n,m,vis[3010][3010],ans;//mapp[i][j]存如果有陨石那么存时间,如果没有存极大值
int xt[4]={0,0,1,-1};
int yt[4]={1,-1,0,0}; 
struct node{
	int x;
	int y;
	int step;
};
int bfs(int x,int y,int s){
	queue<node> q;
	node a;
	a.x=x;
	a.y=y;
	a.step=s;
	q.push(a);
	while(!q.empty()){
		int nx=q.front().x;
		int ny=q.front().y;
		int ns=q.front().step;
		q.pop();
		if(nx==n && ny==n){
			return ns;
		}
		ns++;
		for(int i=0;i<4;i++){
			int tx=nx+xt[i];
			int ty=ny+yt[i];
			if(tx<1||tx>n||ty<1||ty>n||vis[tx][ty]!=0||mapp[tx][ty]<=ns){
				continue;
			}
			vis[tx][ty]=1;
			node b;
			b.x=tx;
			b.y=ty;
			b.step=ns;
			q.push(b);
		}
	}
	return -1;
}
int main(){
	 cin>>n>>m;
	 
	 for(int i=1;i<=n;i++){
	 	for(int j=1;j<=n;j++){
	 		mapp[i][j]=1000000;
	 		vis[i][j]=0;
		 }
	 }
	int x;
	int y;
	int t;
	
	 for(int i=1;i<=m;i++){
	 	cin>>x>>y>>t;
	 	mapp[x][y]=t;
	 	mapp[x+1][y]=t;
	 	mapp[x-1][y]=t;
	 	mapp[x][y-1]=t;
	 	mapp[x][y+1]=t;
	 }
	 vis[1][1]=1;
	 cout<<bfs(1,1,0);
	 return 0;
}
2023/7/30 20:21
加载中...