#include <iostream>
#include <cstdio>
using namespace std; const int MAX=; char maze[MAX][MAX][MAX]; struct {
int i,j,k;
}beg,des,que[],tmp,pushed;
int f,l;
char str[],n;
bool vis[MAX][MAX][MAX];
int dir[][]={,,,-,,,,,,,-,,,,,,,-}; bool ok(int i,int j,int k){
if(i<||i>=n||j<||j>=n||k<||k>=n||vis[i][j][k]||maze[i][j][k]=='X')
return false;
return true;
} bool bfs(){
int step=; int ti,tj,tk;
bool flag=false;
while(f<l){
int size=l-f;
step++;
while(size--){
tmp=que[f++];
if(tmp.i==des.i&&tmp.j==des.j&&tmp.k==des.k){
flag=true;
break;
}
for(int i=;i<;i++){
ti=tmp.i+dir[i][];
tj=tmp.j+dir[i][];
tk=tmp.k+dir[i][];
if(ok(ti,tj,tk)){
vis[ti][tj][tk]=true;
pushed.i=ti; pushed.j=tj; pushed.k=tk;
que[l++]=pushed;
}
}
}
if(flag) break;
}
if(flag){
printf("%d %d\n",n,step-);
return true;
}
return false;
} int main(){
while(scanf("%s %d",str,&n)!=EOF){
for(int i=;i<n;i++){
for(int j=;j<n;j++)
cin>>maze[i][j];
}
// cout<<"NO"<<endl;
scanf("%d%d%d",&beg.j,&beg.k,&beg.i);
scanf("%d%d%d",&des.j,&des.k,&des.i);
cin>>str;
// cout<<"YES"<<endl;
memset(vis,false,sizeof(vis));
f=l=;
if(beg.i==des.i&&beg.j==des.j&&beg.k==des.k){
printf("%d 0\n",n);
continue;
}
vis[beg.i][beg.j][beg.k]=true;
que[l++]=beg;
if(!bfs())
printf("NO ROUTE\n");
}
return ;
}

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. NOIP2013--火柴排队(树状数组)

    转载: 树状数组,具体的说是 离散化+树状数组.这也是学习树状数组的第一题. 算法的大体流程就是: 1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的, 2.接着,运用树状数组的标准操作来累 ...

  2. 多线程编程和Java网络编程

    1. 线程概述 多任务处理有两种类型:基于进程.基于线程(进程是指一种“自包容”的运行程序,有自己的地址空间; 线程是进程内部单一的一个顺序控制流) 基于进程的特点是允许计算机同时运行两个或更多的程序 ...

  3. openStack enscaption

  4. git的使用(转)

    git 配置文件 git的配置文件位置针对所有用户:/etc/gitconfig针对当前用户: -/.gitconfig 查看配置的方法 git config --list 修改配置的方法 git c ...

  5. XML案例(使用DOM4J解析XML文档)

    1.Demo1.java package cn.itcast.dom4j; import java.io.File;import java.io.FileOutputStream;import jav ...

  6. Doubles

    http://poj.org/problem?id=1552 #include<stdio.h> ; int main() { int n,f[N],g[N]; int cnt; ) { ...

  7. NoSQL概念

    NoSQL是非关系型数据库,即not only sql,key/value键值对存储. 现有Nosql DB产品:Redis/MongoDB/Memcached等等. SQL Sever是关系型数据库 ...

  8. php实时推送系统消息给客户端

    在我们实际开发过程中,有些数据需要实时获取:比如erp系统中的订单信息,OA系统中的流程审批等都需要及时处理,这时我们就不能再使用http协议了:当然也可以使用轮询的机制.但是轮询请求中有大半是无用, ...

  9. 【Arduino】LCD 1602 转接板 的默认接线

    原来的1602屏需要7个IO口才能驱动起来LCD 1602转接板可以帮你省5个IO口. 在Arduino中,LCD 1602 转接板可以使用函数库LiquidCrystal_I2C1602: 该函数的 ...

  10. php数据库分页

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...