原题链接

思路:bfs搜一发

AC代码:

  1. #include "map"
  2. #include "queue"
  3. #include "math.h"
  4. #include "stdio.h"
  5. #include "string.h"
  6. #include "iostream"
  7. #include "algorithm"
  8. #define abs(x) x > 0 ? x : -x
  9. #define max(a,b) a > b ? a : b
  10. #define min(a,b) a < b ? a : b
  11.  
  12. using namespace std;
  13.  
  14. int di[][] = {{,,},{,,},{,,-},{,-,},{,,},{-,,}};
  15. int Map[][][];
  16. bool vis[][][];
  17. int t;
  18.  
  19. struct Node
  20. {
  21. int zz,xx,yy;
  22. int step;
  23. };
  24.  
  25. void Bfs()
  26. {
  27. memset(vis,,sizeof(vis));
  28. queue<Node>Q;
  29. Node now,next;
  30. int l,r;
  31.  
  32. now.zz=;
  33. now.xx=;
  34. now.yy=;
  35. now.step=;
  36. vis[][][] = ;
  37.  
  38. Q.push(now);
  39.  
  40. while(!Q.empty())
  41. {
  42. now = Q.front();
  43. Q.pop();
  44.  
  45. if(Map[now.zz][now.xx][now.yy]==)
  46. {
  47. if(now.step<=t)
  48. printf("YES\n");
  49. else
  50. printf("NO\n");
  51. return;
  52. }
  53. if(Map[now.zz][now.xx][now.yy]==)
  54. l=,r=;
  55. if(Map[now.zz][now.xx][now.yy]==)
  56. l=,r=;
  57.  
  58. for(int i=l; i<r; i++)
  59. {
  60. next.zz = now.zz + di[i][];
  61. next.xx = now.xx + di[i][];
  62. next.yy = now.yy + di[i][];
  63. next.step = now.step + ;
  64. if(i==||i==)
  65. next.step = now.step;
  66.  
  67. if(Map[next.zz][next.xx][next.yy]!=)
  68. {
  69. if(!vis[next.zz][next.xx][next.yy])
  70. {
  71. vis[next.zz][next.xx][next.yy] = ;
  72. Q.push(next);
  73. }
  74. }
  75. }
  76. }
  77. printf("NO\n");
  78. }
  79.  
  80. int main()
  81. {
  82. int c,n,m,i,j,k;
  83. char s;
  84. scanf("%d",&c);
  85. while(c--)
  86. {
  87. memset(Map,,sizeof(Map));
  88. scanf("%d%d%d",&n,&m,&t);
  89. for(i=; i<=; i++)
  90. {
  91. for(j=; j<=n; j++)
  92. {
  93. getchar();
  94. for(k=; k<=m; k++)
  95. {
  96. scanf("%c",&s);
  97. if(s=='S'||s=='.')
  98. Map[i][j][k] = ;
  99. if(s=='P')
  100. Map[i][j][k] = ;
  101. if(s=='#')
  102. Map[i][j][k] = ;
  103. if(s=='*')
  104. Map[i][j][k] = ;
  105. }
  106. }
  107. getchar();
  108. }
  109.  
  110. Bfs();
  111. }
  112. return ;
  113. }

hdu 2102 BFS的更多相关文章

  1. [hdu 2102]bfs+注意INF

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 感觉这个题非常水,结果一直WA,最后发现居然是0x3f3f3f3f不够大导致的……把INF改成I ...

  2. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  3. hdu - 2102 A计划 (简单bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...

  4. hdu 2102 A计划(双层BFS)(具体解释)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...

  5. HDU 2102 A计划(BFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输 ...

  6. HDU 2102 A计划(两层地图加时间限制加传送门的bfs)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others)    Me ...

  7. HDU - 2102 A计划 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要 ...

  8. hdu 2102 A计划 具体题解 (BFS+优先队列)

    题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...

  9. hdu 2102 A计划-bfs

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

随机推荐

  1. visio调整画布大小和旋转画布(转)

    1.调整画布大小: 鼠标移至画布边界(注意不能是顶点附近),按下ctrl,就会出现双向箭头,拖动鼠标即能调整画布大小. 2.旋转画布: 鼠标移至画布顶点或附近,按下ctrl, 出现单箭头优弧,移动鼠标 ...

  2. ios本地推送

    #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate //无论程序在 ...

  3. 智能车学习(二十三)——浅谈心得体会

          因为毕竟是竞赛,跟学校挂钩,没办法开源代码和算法完成思路,所以不能详细写太多,如果可以等价交换的话,应该还是可以向领导申请一下的.       在厦大信科通信系,参加这个比赛,大家都觉得性 ...

  4. PowerDesigner 16.5

    PowerDesigner165_破解文件.rar    链接:http://pan.baidu.com/s/1hqEDUCG    636KB PowerDesigner165_Evaluation ...

  5. C#复习、面向对象阶段开始

    C#复习:在控制台程序中使用结构体.集合,完成下列要求项目要求:一.连续输入5个学生的信息,每个学生都有以下4个内容:1.序号 - 根据输入的顺序自动生成,不需要手动填写,如输入第一个学生的序号是1, ...

  6. 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中

    package com.sxd.test.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...

  7. sqoop中,如果数据中本身有换行符,会导致数据错位

    sqoop中,如果数据中本身有换行符,会导致数据错位: 解决办法: 在sqoop import时修改配置文件 sudo -u hive sqoop import --connect jdbc:mysq ...

  8. Liferay 6.2 改造系列之十二:修改Portal设置页面表单内容

    将Portal设置页面中无用的内容删除: 在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # Input a list of ...

  9. mysql root用户 远程登录其它机器,看不到数据库

    在102上访问101上的数据库里,show databases;看不到里面的库, 需要在101上授权就可以了 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.16 ...

  10. Linux解压文件

    zip: 解压:unzip filename 解压到tmp文件夹:unzip filename.zip -d /tmp 查看压缩文件而不解压:unzip filename.zip -v tar.gz: ...