比赛 20181002 评测结果 AAAAAAWAAAAAAA
题目名称 流星雨 最终得分 92
用户昵称 pztl 运行时间 0.089 s
代码语言 C++ 内存使用 1.80 MiB
提交时间 2018-10-02 11:53:52
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. #define inf 0x7fffffff
  3. using namespace std;
  4. int n,f[310][310];
  5. bool mark[310][310];
  6. int xx[4]={0,0,1,-1},yy[4]={1,-1,0,0};
  7. struct data
  8. {int x,y,t;}q[90001];
  9. void bfs()
  10. {
  11. int t=0,w=1;
  12. mark[0][0]=1;
  13. while(t<w)
  14. {
  15. int x=q[t].x,y=q[t].y,time=q[t].t;
  16. t++;
  17. for(int i=0;i<4;i++)
  18. {
  19. int x1=x+xx[i],y1=y+yy[i];
  20. if(mark[x1][y1]||x1<0||y1<0||time+1>=f[x1][y1])
  21. continue;
  22. if(f[x1][y1]==inf)
  23. {
  24. cout<<time+1<<endl;;
  25. return;
  26. }
  27. q[w].x=x1;
  28. q[w].y=y1;
  29. q[w++].t=time+1;
  30. mark[x1][y1]=1;
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. freopen("meteor.in","r",stdin);
  37. freopen("meteor.out","w",stdout);
  38. for(int i=0;i<=305;i++)
  39. for(int j=0;j<=305;j++)
  40. f[i][j]=inf;
  41. scanf("%d",&n);
  42. for(int i=1;i<=n;i++)
  43. {
  44. int x,y,t;
  45. cin>>x>>y>>t;
  46. f[x][y]=min(f[x][y],t);
  47. for(int j=0;j<4;j++)
  48. {
  49. int x1=x+xx[j],y1=y+yy[j];
  50. if(x1<0||y1<0)
  51. continue;
  52. f[x1][y1]=min(f[x1][y1],t);
  53. }
  54. }
  55. bfs();
  56. return 0;
  57. }