简单的BFS   1a

 /*
从起点到终点
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<queue>
#include<iostream>
using namespace std; const int maxn = ;
const int Max = ;
char mat[ maxn ][ maxn ][ maxn ];
int vis[ maxn ][ maxn ][ maxn ];
const int dx[]={,,,-,,};
const int dy[]={,-,,,,};
const int dz[]={,,,,,-};
struct node{
int x,y,z,ti;
}my_start,my_end; bool ok( node cur ){
if( mat[ cur.z ][ cur.x ][ cur.y ]=='X'||vis[ cur.z ][ cur.x ][ cur.y ]== )
return false;
else
return true;
} bool inside( node cur,int n ){
if( cur.x>=&&cur.x<n&&cur.y>=&&cur.y<n&&cur.z>=&&cur.z<n )
return true;
else
return false;
} int bfs( int n ){
if( my_start.x==my_end.x&&my_start.y==my_end.y&&my_start.z==my_end.z )
return ;
queue<node>q;
node cur,nxt;
int ans = Max;
cur.x = my_start.x;
cur.y = my_start.y;
cur.z = my_start.z;
cur.ti = ;
vis[ cur.z ][ cur.x ][ cur.y ] = ;
q.push( cur );
while( !q.empty() ){
cur = q.front();
q.pop();
if( cur.x==my_end.x&&cur.y==my_end.y&&cur.z==my_end.z ){
ans = min( ans,cur.ti );
}
for( int i=;i<;i++ ){
nxt = cur;
nxt.ti ++;
nxt.x += dx[i];
nxt.y += dy[i];
nxt.z += dz[i];
if( inside( nxt,n )==false||ok( nxt )==false ) continue;
vis[ nxt.z ][ nxt.x ][ nxt.y ] = ;
q.push( nxt );
}
} if( ans>=Max ) return -;
else return ans;
} int main(){
int N;
char str[ maxn ];
while( scanf("%s%d",str,&N)!=EOF ){
memset( vis,,sizeof( vis ) );
for( int i=;i<N;i++ ){
for( int j=;j<N;j++ ){
scanf("%s",mat[ i ][ j ]);
}
}
//mat[i][j][k] 层 行 列
scanf("%d%d%d",&my_start.y,&my_start.x,&my_start.z);
scanf("%d%d%d",&my_end.y,&my_end.x,&my_end.z);
//列 行 层
scanf("%s",str);
int ans = bfs( N );
if( ans==- ) printf("NO ROUTE\n");
else printf("%d %d\n",N,ans);
}
return ;
}

POJ2225+BFS的更多相关文章

  1. hdu1240/poj2225 BFS广搜的再理解

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/guodongxiaren/article/details/37756347 原题地址 pid=124 ...

  2. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  3. 【BZOJ-1656】The Grove 树木 BFS + 射线法

    1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 186  Solved: 118[Su ...

  4. POJ 3278 Catch That Cow(bfs)

    传送门 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 80273   Accepted: 25 ...

  5. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  6. Sicily 1215: 脱离地牢(BFS)

    这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...

  7. Sicily 1048: Inverso(BFS)

    题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...

  8. Sicily 1444: Prime Path(BFS)

    题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...

  9. Sicily 1051: 魔板(BFS+排重)

    相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...

随机推荐

  1. [转载][记录]javascript生成不重复的随机数

    参考链接:javascript生成不重复的随机数 项目播放视频,是无序的,有上下两个按钮,所以需要生成1,8不重复的随机数数组,如: ,,,,,,, 然后再split一次,就是数组了. 拿来主义了

  2. JDK Tools - wsimport: 编译 WSDL 生成 JAX-WS 规范的 Java 类

    wsimport 命令是用来编译 wsdl 生成JAX-WS 规范的 Java 类的工具. 命令格式 wsimport [ options ] wsdl 命令参数 -s directory 指定源文件 ...

  3. 在线HTML编辑器 kindeditor-4.1.10 上传图片文件 应用指南

    1.在ASPX页面中对应的head.body添加相应的红色部分 2.引用kindeditor-4.1.10中的litjosn.dll 3.在写入数据库时要替换相应的路径和IP 4.kindeditor ...

  4. Could not find artifact com.sun:tools:jar:1.5.0解决方法

    可以参照在XP系统下搭建maven环境出的问题 Unable to locate the Javac Compiler in: C:\Program Files\Java\jre6\..\lib\to ...

  5. JavaScript高级程序设计(三):基本概念:数据类型

    特别注意:ECMAScript是区分大小写的. 一.变量 1.ECMAScript的变量是松散型的.所谓松散型就是可以用来保存任何类型的数据.即每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使 ...

  6. Invalid result location value/parameter

    Invalid result location value/parameter(struts2),该问题在myeclipse8.6一下的版本不会出现,但是在myeclipse9.0中就会出现该错误.有 ...

  7. ### 学习《C++ Primer》- 7

    Part 7: 重载运算与类型转换(第14章) // @author: gr // @date: 2015-01-08 // @email: forgerui@gmail.com 一.重载运算符要求 ...

  8. Android笔记之adb命令应用实例1(手机端与PC端socket通讯上)

    Android端的代码: 布局文件:activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ ...

  9. SQL Constraint/Index

    1.SQL Constraint Integrity Constraints are used to apply business rules for the database tables. The ...

  10. 设置Session的超时时间

    设置Session的超时时间 IIS 里面有个设置 站点属性->主目录->应用程序配置->选项->启用会话状态->会话超时,可以设置. 在web.config中,设置: ...