因为这个题做了两次犯了两次不同的错误、

第一次用的dfs死活都超时

第二次把定义队列定义在了全局变量的位置,导致连WA了几次、最后找到原因的我真的想一巴掌拍死自己

 #include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int qq=;
int vis[qq][qq][qq];
char map[qq][qq][qq];
int tz,ty,tx,k,n,m,sx,sy,sz;
int dir[][]={-,,,,,,,-,,,,,,,,,,-};
struct point{
int a,b,c;
int step;
};
int check(int z,int y,int x)
{
if(z<||y<||x<||z>=k||y>=n||x>=m||vis[z][y][x]||map[z][y][x]=='#')
return ;
return ;
}
void bfs()
{
queue<point>Q; //就是这个定义队列放在了bfs函数外、导致我WA了很多次特地来提醒自己
memset(vis,,sizeof(vis)); //在写宽搜的时候一定不要犯同样的错误了、
point now,ans;
now.step=;now.a=sz;now.b=sy;now.c=sx;
vis[sz][sy][sx]=;
Q.push(now);
while(!Q.empty()){
ans=Q.front();
Q.pop();
if(ans.a==tz&&ans.b==ty&&ans.c==tx){
printf("Escaped in %d minute(s).\n",ans.step);
return;
}
for(int i=;i<;++i){
now.a=ans.a+dir[i][];
now.b=ans.b+dir[i][];
now.c=ans.c+dir[i][];
if (check(now.a,now.b,now.c))
{
now.step=ans.step+;
vis[now.a][now.b][now.c]=;
Q.push(now);
}
}
}
printf("Trapped!\n");
return;
}
int main()
{
while(~scanf("%d %d %d%*c",&k,&n,&m)&&k)
{
for(int i,j,l=;l<k;++l){
for(j=;j<n;++j){
for(i=;i<m;++i){
map[l][j][i]=getchar();
if (map[l][j][i]=='S'){
sx=i;sy=j;sz=l;
}
else if (map[l][j][i]=='E'){
tx=i;ty=j;tz=l;
}
}
getchar();
}
getchar();
}
bfs();
}
return ;
}

做搜索题目一定要思路清晰、然后是代码的意义要明白的透彻

POJ 2251宽搜、的更多相关文章

  1. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  2. 【BFS】POJ 2251

    POJ 2251 Dungeon Master 题意:有一个地图,三维,走的方向是上下,左右,前后.问你最小步数从起始点走到出口. 思路:三维的BFS,就是多加一组状态,需要细心(不细心如我就找了半个 ...

  3. 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。

    利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...

  4. POJ1426 Find The Multiple (宽搜思想)

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24768   Accepted: 102 ...

  5. Colorado Potato Beetle(CF的某道) & 鬼畜宽搜

    题意: 一个人在一张大图上走,给你路径与起点,求他走出的矩形面积并.(大概这个意思自行百度标题... SOL: 与其说这是一道图论题不如说是一道生动活泼的STL-vector教学.... 离散化宽搜, ...

  6. POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)

    POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...

  7. BZOJ_1615_[Usaco2008_Mar]_The Loathesome_Hay Baler_麻烦的干草打包机_(模拟+宽搜/深搜)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1615 一个主动轮带着一些轮子转,轮子带着轮子转,轮子带着轮子转...一个非主动轮只会被一个轮子 ...

  8. 【宽搜】ECNA 2015 D Rings (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: 给你一张N*N(N<=100)的图表示一个树桩,'T'为年轮,'.'为空,求每个'T'属于哪一圈年轮,空 ...

  9. 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)

    题目链接: http://codeforces.com/gym/100825 题目大意: N个点M条无向边,(N<=100,M<=N(N-1)/2),起始感染源S,时间T(T<10) ...

随机推荐

  1. Laravel访问出错错误信息:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or dire

    错误信息:`Warning: require(/http/www.mywakavLee.cn/bootstrap/../vendor/autoload.php): failed to open str ...

  2. SEO优化步骤

    SEO技术并不是简单的几个建议,而是一项需要足够耐心和细致的脑力劳动.大体上,SEO优化主要分为8小步: 1.关键词分析(也叫关键词定位) 这是进行SEO优化最重要的一环,关键词分析包括:关键词关注量 ...

  3. 成功的背后!(送给所有IT人)

    希望自己迷茫的时候,看到能够惊醒 来自CSDN第3名的博主(http://blog.csdn.net/phphot/article/details/2187505) 成功的背后,有着许多不为人知的故事 ...

  4. golang变量-数据类型一

    package main import "fmt" var t1 = 100 var t2 = 200 var t3 = 300 var ( u1 = 100 u2 = 200 u ...

  5. Spark day06

    SparkStreaming简介 SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展.高吞吐量.容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, ...

  6. ubuntu16.04如何查看内存和CPU的使用情况

    ubuntu16.04如何查看内存和CPU的使用情况? 使用一下命令: gnome-system-monitor

  7. bzoj1231 混乱的奶牛

    Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...

  8. 寒哥教你学iOS - 经验漫谈

    http://www.jianshu.com/p/cb54054d3add 寒哥教你学iOS - 经验漫谈 字数2848 阅读1896 评论19 喜欢43 顺便来个广告 iOS开发者 群1734993 ...

  9. Java练习 SDUT-3081_谁是最强女汉子

    谁是最强的女汉子 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 众所周知,一年一度的女汉子大赛又来啦.由于最近女汉子比 ...

  10. shell学习(18)- split切分文件命令

    Linux split命令用于将一个文件分割成数个. 该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件. 语法: split [--help][--version][-& ...