题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102

题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。

解题思路:em....还是bfs,只是可以通过‘#’上下传送,其他都差不多。需要注意:当传送过去是‘*’(墙),或者传送过去是‘#’(传送机)这两种都算是传送失败了。

代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<queue>
  4. using namespace std;
  5. const int N=;
  6.  
  7. int m,n,T;
  8. int d[][]={{,},{,-},{,},{-,}};
  9. char map[N][N][];
  10. int vis[N][N][];
  11.  
  12. struct node{
  13. int x,y,z,step;
  14. }pre,now;
  15.  
  16. bool bfs(){
  17. queue<node>q;
  18. now.x=now.y=now.z=;
  19. now.step=;
  20. q.push(now);
  21. while(!q.empty()){
  22. pre=q.front();
  23. q.pop();
  24. for(int i=;i<;i++){
  25. int xx=pre.x+d[i][];
  26. int yy=pre.y+d[i][];
  27. int zz=pre.z;
  28. int t=pre.step+;
  29. if(xx<||yy<||zz<||xx>n||yy>m||zz>||vis[xx][yy][zz]||map[xx][yy][zz]=='*')
  30. continue;
  31. vis[xx][yy][zz]=;
  32. if(map[xx][yy][zz]=='#'){
  33. if(zz==)
  34. zz++;
  35. else
  36. zz--;
  37. //注意除了墙,如果另一层是传送机也不行,传来传去无限循环啊~
  38. if(vis[xx][yy][zz]||map[xx][yy][zz]=='*'||map[xx][yy][zz]=='#')
  39. continue;
  40. vis[xx][yy][zz]=;
  41. }
  42. if(map[xx][yy][zz]=='P'){
  43. if(t<=T)
  44. return true;
  45. return false;
  46. }
  47. now.x=xx;
  48. now.y=yy;
  49. now.z=zz;
  50. now.step=t;
  51. q.push(now);
  52. }
  53. }
  54. return false;
  55. }
  56.  
  57. int main(){
  58. int t;
  59. scanf("%d",&t);
  60. while(t--){
  61. memset(vis,,sizeof(vis));
  62. scanf("%d%d%d",&n,&m,&T);
  63. for(int k=;k<=;k++){
  64. if(k!=)
  65. getchar();
  66. for(int i=;i<=n;i++){
  67. getchar();
  68. for(int j=;j<=m;j++){
  69. scanf("%c",&map[i][j][k]);
  70. }
  71. }
  72. }
  73. if(bfs())
  74. puts("YES");
  75. else
  76. puts("NO");
  77. }
  78. return ;
  79. }

HDU 2102 A计划(BFS)的更多相关文章

  1. HDU 2102 A计划(BFS/DFS走迷宫)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. hdu 2102 A计划-bfs

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

  3. HDU - 2102 A计划 (BFS) [kuangbin带你飞]专题二

    思路:接BFS判断能否在限制时间内到达公主的位置,注意如果骑士进入传送机就会被立即传送到另一层,不会能再向四周移动了,例如第一层的位置(x, y, 1)是传送机,第二层(x, y, 2)也是传送机,这 ...

  4. HDU 2102 A计划 (BFS或DFS)

    题意:中文题. 析:是一个简单的搜索,BFS 和 DFS都可行, 主要是这个题有一个坑点,那就是如果有一层是#,另一个层是#或者*,都是过不去的,就可以直接跳过, 剩下的就是一个简单的搜索,只不过是两 ...

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

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

  6. hdu 2102 A计划

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸 ...

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

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

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

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

  9. HDU - 2102 A计划 【BFS】

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

随机推荐

  1. CODECHEF Chef and Churus 解题报告

    [CODECHEF]Chef and Churus Description 有一个长度为\(n\)的数组\(A\),有\(n\)个函数,第\(i\)个函数的值为\(\sum_{j=l_i}^{r_i} ...

  2. 洛谷 P2900 [USACO08MAR]土地征用Land Acquisition 解题报告

    P2900 [USACO08MAR]土地征用Land Acquisition 题目描述 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选 ...

  3. win7系统用笔记本共享wifi热点 让手机免费上网

    之前一直在用这个方法把自己的笔记本变成一个wifi热点,让手机也可以直接连wifi上网,节省网费和路由器购买费. 其实就是开启了windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP ...

  4. 保护程序猿滴眼睛---修改VS 2012 编辑器颜色

    转载于http://blog.csdn.net/qing666888/article/details/8973216 字体,发现好多人选用 Consolas  ...确实挺好看的. 然后 修改背景色: ...

  5. [ldap]ldap server安装以及图形化操作

    https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on ...

  6. oracle实用的sqlplus命令

    有时候难免没有工具,得自己手动输入sqlplus命令 执行SQL文件:@sql文件,例如:@/home/myuser/sql/test.sql查看数据库存在的存储过程:Select object_na ...

  7. Java集合框架(set)

    set继承自collection接口,其子类和子接口如下: set的共同特性:不能添加相同的元素,通常无法记住元素添加的顺序 1.HashSet类 判断两元素相同的标准:1.equals方法返回tru ...

  8. centos6.5 mqtt安装

    CentOs 6.5 MQTT 安装部署 所需安装包: libwebsockets-v1.6-stable.tar.gz,mosquitto-1.4.8.tar.gz 1.安装依赖 # yum -y ...

  9. 逆推 Gym 101102J

    题目链接:http://codeforces.com/gym/101102/problem/J 题目大意可以看这个人的:http://www.cnblogs.com/chen9510/p/593362 ...

  10. POJ 2007 Scrambled Polygon 极角序 水

    LINK 题意:给出一个简单多边形,按极角序输出其坐标. 思路:水题.对任意两点求叉积正负判断相对位置,为0则按长度排序 /** @Date : 2017-07-13 16:46:17 * @File ...