mot1ve @ 2020-11-13 08:16:02
#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int m;
int a[510][510];
bool vis[510][510];//bfs的特性,同一时间走到一个点没必要重复拓展。
int dd[510][510];//标记这个格子什么时候会被炸毁
struct node{
int x,y,day;
};
void bfs()
{
queue<node> q;
q.push((node){0,0,0});
while(q.size())
{
node u=q.front();
q.pop();
int x=u.x;
int y=u.y;
int day=u.day;
if(dd[x][y]==INF)
{
cout<<day;
exit(0);
}
for(int i=0;i<4;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(xx<0||yy<0||xx>300||yy>300)
continue;
if((day<dd[xx][yy]-1)&&(!vis[xx][yy]))//走到那里的时候不会被砸死
{
vis[xx][yy]=1;
q.push((node){xx,yy,day+1});
}
}
}
}
int main()
{
cin>>m;
memset(dd,INF,sizeof(dd));//初始全都不会炸毁
for(int i=1;i<=m;i++)
{
int x,y,t;
scanf("%d%d%d",&x,&y,&t);
dd[x][y]=min(dd[x][y],t);
dd[x+1][y]=min(dd[x+1][y],t);
dd[x-1][y]=min(dd[x-1][y],t);;
dd[x][y+1]=min(dd[x][y+1],t);
dd[x][y-1]=min(dd[x][y-1],t);
}
bfs();
cout<<"-1";
return 0;
}
by Priori_Incantatem @ 2020-11-13 08:26:22
首页三贴危
by haooo @ 2020-11-13 08:28:10
关键是3个贴都不能算没有意义(
by —维尼— @ 2020-11-13 08:28:54
cz!就是他在洛谷买房住!
by Van♂樣年华 @ 2020-11-13 08:35:58
其实他好像差不多一天有那么十几个贴(我水讨论的时候总能看到)
by mot1ve @ 2020-11-13 08:36:45
@Van♂樣年华 额,,可能是我比较菜,同学回去学文化课了。也没人问
by Van♂樣年华 @ 2020-11-13 08:39:41
@wqy_03 我菜,不懂
by hanwb123456 @ 2021-01-13 17:59:00
因为可以走出300外,他只说流星落在300内,没有说人一定要在300内