比赛 |
20181002 |
评测结果 |
AAAAAAWAAAAAAA |
题目名称 |
流星雨 |
最终得分 |
92 |
用户昵称 |
pztl |
运行时间 |
0.089 s |
代码语言 |
C++ |
内存使用 |
1.80 MiB |
提交时间 |
2018-10-02 11:53:52 |
显示代码纯文本
#include<bits/stdc++.h>
#define inf 0x7fffffff
using namespace std;
int n,f[310][310];
bool mark[310][310];
int xx[4]={0,0,1,-1},yy[4]={1,-1,0,0};
struct data
{int x,y,t;}q[90001];
void bfs()
{
int t=0,w=1;
mark[0][0]=1;
while(t<w)
{
int x=q[t].x,y=q[t].y,time=q[t].t;
t++;
for(int i=0;i<4;i++)
{
int x1=x+xx[i],y1=y+yy[i];
if(mark[x1][y1]||x1<0||y1<0||time+1>=f[x1][y1])
continue;
if(f[x1][y1]==inf)
{
cout<<time+1<<endl;;
return;
}
q[w].x=x1;
q[w].y=y1;
q[w++].t=time+1;
mark[x1][y1]=1;
}
}
}
int main()
{
freopen("meteor.in","r",stdin);
freopen("meteor.out","w",stdout);
for(int i=0;i<=305;i++)
for(int j=0;j<=305;j++)
f[i][j]=inf;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x,y,t;
cin>>x>>y>>t;
f[x][y]=min(f[x][y],t);
for(int j=0;j<4;j++)
{
int x1=x+xx[j],y1=y+yy[j];
if(x1<0||y1<0)
continue;
f[x1][y1]=min(f[x1][y1],t);
}
}
bfs();
return 0;
}