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

第一次用的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. arcgis显示经纬度

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. HTML之meta标签缓存控制

    <meta http-equiv="pragram" content="no-cache"> 禁止浏览器从本地缓存中调阅页面. 网页不保存在缓存中, ...

  3. 51nod1196 字符串的数量

    用N个不同的字符(编号1 - N),组成一个字符串,有如下要求:(1) 对于编号为i的字符,如果2 * i > n,则该字符可以作为结尾字符.如果不作为结尾字符而是中间的字符,则该字符后面可以接 ...

  4. Nginx教程(6) 动静分离架构 (转)

    一.原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,To ...

  5. 2019-6-23-WPF-网络-request-的-read-方法不会返回

    title author date CreateTime categories WPF 网络 request 的 read 方法不会返回 lindexi 2019-06-23 11:26:26 +08 ...

  6. MaxCompute 图计算用户手册(上)

    概要 ODPS GRAPH是一套面向迭代的图计算处理框架.图计算作业使用图进行建模,图由点(Vertex)和边(Edge)组成,点和边包含权值(Value),ODPS GRAPH支持下述图编辑操作: ...

  7. H5本地存储技术和微信小程序中的本地存储

    1.H5的本地存储 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 关于使用 Java 分片读\写文件

    分片读取文件方法: /** * 分片读取文件块 * * @param path 文件路径 * @param position 角标 * @param blockSize 文件块大小 * @return ...

  9. MongoDB -- JAVA基本API操作

    package com.example.mongodb.mongodb.demo; import com.mongodb.MongoClient; import com.mongodb.client. ...

  10. SDUT-2134_数据结构实验之栈与队列四:括号匹配

    数据结构实验之栈与队列四:括号匹配 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给你一串字符,不超过50个字符,可能 ...