1. #include <iostream>
  2. #include <cstdio>
  3. using namespace std;
  4.  
  5. const int MAX=;
  6.  
  7. char maze[MAX][MAX][MAX];
  8.  
  9. struct {
  10. int i,j,k;
  11. }beg,des,que[],tmp,pushed;
  12. int f,l;
  13. char str[],n;
  14. bool vis[MAX][MAX][MAX];
  15. int dir[][]={,,,-,,,,,,,-,,,,,,,-};
  16.  
  17. bool ok(int i,int j,int k){
  18. if(i<||i>=n||j<||j>=n||k<||k>=n||vis[i][j][k]||maze[i][j][k]=='X')
  19. return false;
  20. return true;
  21. }
  22.  
  23. bool bfs(){
  24. int step=; int ti,tj,tk;
  25. bool flag=false;
  26. while(f<l){
  27. int size=l-f;
  28. step++;
  29. while(size--){
  30. tmp=que[f++];
  31. if(tmp.i==des.i&&tmp.j==des.j&&tmp.k==des.k){
  32. flag=true;
  33. break;
  34. }
  35. for(int i=;i<;i++){
  36. ti=tmp.i+dir[i][];
  37. tj=tmp.j+dir[i][];
  38. tk=tmp.k+dir[i][];
  39. if(ok(ti,tj,tk)){
  40. vis[ti][tj][tk]=true;
  41. pushed.i=ti; pushed.j=tj; pushed.k=tk;
  42. que[l++]=pushed;
  43. }
  44. }
  45. }
  46. if(flag) break;
  47. }
  48. if(flag){
  49. printf("%d %d\n",n,step-);
  50. return true;
  51. }
  52. return false;
  53. }
  54.  
  55. int main(){
  56. while(scanf("%s %d",str,&n)!=EOF){
  57. for(int i=;i<n;i++){
  58. for(int j=;j<n;j++)
  59. cin>>maze[i][j];
  60. }
  61. // cout<<"NO"<<endl;
  62. scanf("%d%d%d",&beg.j,&beg.k,&beg.i);
  63. scanf("%d%d%d",&des.j,&des.k,&des.i);
  64. cin>>str;
  65. // cout<<"YES"<<endl;
  66. memset(vis,false,sizeof(vis));
  67. f=l=;
  68. if(beg.i==des.i&&beg.j==des.j&&beg.k==des.k){
  69. printf("%d 0\n",n);
  70. continue;
  71. }
  72. vis[beg.i][beg.j][beg.k]=true;
  73. que[l++]=beg;
  74. if(!bfs())
  75. printf("NO ROUTE\n");
  76. }
  77. return ;
  78. }

HDU 1240的更多相关文章

  1. hdu - 1240 Nightmare && hdu - 1253 胜利大逃亡(bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1240 开始没仔细看题,看懂了发现就是一个裸的bfs,注意坐标是三维的,然后每次可以扩展出6个方向. 第一维代表在 ...

  2. hdu 1240:Asteroids!(三维BFS搜索)

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. HDU 1240 Asteroids! 解题报告

    //这道题做完我只有 三个感受  第一:坑: 第二 : 坑! 第三:还是坑! 咳咳  言归正传  WA了无数次之后才发现是输入进去时坐标时z, y, x的顺序输入的 题解   :  类似胜利大逃亡 只 ...

  4. HDU 1240 (简单三维广搜) Asteroids!

    给出一个三维的迷宫以及起点和终点,求能否到大终点,若果能输出最短步数 三维的问题无非就是变成了6个搜索方向 最后强调一下xyz的顺序,从输入数据来看,读入的顺序是map[z][x][y] 总之,这是很 ...

  5. hdu 1240 Asteroids! (三维bfs)

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. HDU 1240 Asteroids!

    三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...

  7. HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids

    普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...

  8. hdu 1240 Asteroids!(BFS)

    题目链接:点击链接 简单BFS,和二维的做法相同(需注意坐标) 题目大意:三维的空间里,给出起点和终点,“O”表示能走,“X”表示不能走,计算最少的步数 #include <iostream&g ...

  9. HDU 1240 Asteroids!(BFS)

    题目链接 Problem Description You're in space.You want to get home.There are asteroids.You don't want to ...

  10. hdu 1240 3维迷宫 求起点到终点的步数 (BFS)

    题意,给出一个N,这是这个三空间的大小,然后给出所有面的状况O为空地,X为墙,再给出起始点的三维坐标和终点的坐标,输出到达的步数 比较坑 z是x,x是y,y是z,Sample InputSTART 1 ...

随机推荐

  1. 协同过滤算法中皮尔逊相关系数的计算 C++

    template <class T1, class T2>double Pearson(std::vector<T1> &inst1, std::vector<T ...

  2. HTML中的文本框textarea标签

    转自:https://www.jb51.net/web/183411.html <textarea></textarea>用来创建一个可以输入多行的文本框,此标志对用于< ...

  3. HTTP权威协议笔记-9.Web机器人

    经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...

  4. css 浮动问题详解

    浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). ...

  5. 使用maven搭建SSH框架实现登陆、列表查询分页

    SSH框架:struts2 + spring + hibernate web层:struts2+jsp service层:javaBean dao层:hibernate spring:管理Action ...

  6. Inception搭建

    Inception安装Inception是集审核.执行.回滚于一体的一个自动化运维系统,它是根据MySQL代码修改过来的,用它可以很明确的,详细的,准确的审核MySQL的SQL语句,它的工作模式和My ...

  7. SQL Server存储过程作业(三)

    阶段4:练习——插入入住客人记录 需求说明 使用存储过程将入住客人信息插入客人信息表中,要求: 检查身份证号必须是18个字符组成 押金的默认值为1000元 如果客人记录插入成功,输出客人流水号:否则输 ...

  8. 请不要继续使用VC6.0了!

    很多次和身边的同学交流,帮助同学修改代码,互相分享经验,却发现同学们依然在使用老旧的VC6.0作为编程学习的软件,不由得喊出:“请不要继续使用VC6.0了!”. VC6.0作为当年最好的IDE(集成开 ...

  9. c#动态类型Dynamic

    需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Cus ...

  10. C# 前一个数是后一个数的父级

    private void button2_Click(object sender, EventArgs e) { var str = "1 2 3 4 5 6 7 8 9 10 11 12 ...