对于3维的,可以用结构体来储存,详细见下列代码。

样例可以过,不过能不能ac还不知道,疑似poj炸了,

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int INF = 0x3f3f3f3f;
int dx[] = {1, -1, 0, 0, 0, 0};
int dy[] = {0, 0, -1, 1, 0, 0};
int dz[] = {0, 0, 0, 0, 1, -1};
int bx, by, bz;
int ex, ey, ez;
const int maxn = 30 + 5;
class POS
{
public:
POS():x_(-1), y_(-1), z_(-1){ }
POS(int x, int y, int z):x_(x), y_(y), z_(z){ }
int getX(){ return x_;}
int getY(){ return y_;}
int getZ(){ return z_;}
private:
int x_, y_, z_;
};
typedef POS P;
struct Level
{
char maze[maxn][maxn];
int vis[maxn][maxn];
int d[maxn][maxn];
};
int L, R, C;
Level *h;
bool op(int x, int y, int z)
{
if(x >= 0 && x < R && y >= 0 && y < C && z >= 0 && z < L)
return true;
return false;
}
int bfs()
{
queue<P> pos;
pos.push(P(bx, by, bz));
while(!pos.empty())
{
P p = pos.front();
pos.pop();
if(p.getX() == ex && p.getY() == ey && p.getZ() == ez)
break;
h[p.getZ()].vis[p.getX()][p.getY()] = 1;
for(int i = 0; i < 6; i++)
{
int curx = p.getX() + dx[i], cury = p.getY() + dy[i], curz = p.getZ() + dz[i];
if(op(curx, cury, curz) && h[curz].maze[curx][cury] != '#' && !h[curz].vis[curx][cury])
{
h[curz].vis[curx][cury] = 1;
pos.push(P(curx, cury, curz));
h[curz].d[curx][cury] = h[p.getZ()].d[p.getX()][p.getY()] + 1;
}
} }
return h[ez].d[ex][ey]; }
int main()
{
while(cin >> L >> R >> C && (L || R || C))
{
bx = by = bz = -1;
ex = ey = ez = -1;
h = new Level[L];
for(int i = 0; i < L; i++)
{
for(int j = 0; j < R; j++)
{
scanf("%s", h[i].maze[j]); //input
for(int k = 0; k < C ; k++)
{
h[i].vis[j][k] = 0;
if(h[i].maze[j][k] == 'S')
{
h[i].d[j][k] = 0;
bx = j;
by = k;
bz = i;
}
else
h[i].d[j][k] = INF;
if(h[i].maze[j][k] == 'E')
{
ex = j;
ey = k;
ez = i;
}
} } }
int ans = bfs();
if(ans == INF)
cout << "Trapped!" << endl;
else
cout << "Escaped in " << ans << " minute(s)." << endl; delete []h; } }

Dungeon Master POJ - 2251(bfs)的更多相关文章

  1. Dungeon Master poj 2251 dfs

    Language: Default Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16855 ...

  2. Dungeon Master POJ - 2251 (搜索)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 48605   Accepted: 18339 ...

  3. (广搜)Dungeon Master -- poj -- 2251

    链接: http://poj.org/problem?id=2251 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2137 ...

  4. Dungeon Master POJ - 2251 [kuangbin带你飞]专题一 简单搜索

    You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...

  5. B - Dungeon Master POJ - 2251

    //纯bfs #include <iostream> #include <algorithm> #include <cstring> #include <cs ...

  6. kuangbin专题 专题一 简单搜索 Dungeon Master POJ - 2251

    题目链接:https://vjudge.net/problem/POJ-2251 题意:简单的三维地图 思路:直接上代码... #include <iostream> #include & ...

  7. POJ.2251 Dungeon Master (三维BFS)

    POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...

  8. POJ 2251 Dungeon Master【三维BFS模板】

    Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45743 Accepted: 17256 Desc ...

  9. poj 2251 Dungeon Master 3维bfs(水水)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21230   Accepted: 8261 D ...

随机推荐

  1. JQuery在一个简单的表单验证的例子

    html代码例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  2. python 教程 第九章、 类与面向对象

    第九章. 类与面向对象 1)    类 基本类/超类/父类被导出类或子类继承. Inheritance继承 Inheritance is based on attribute lookup in Py ...

  3. WPF 将图片进行灰度处理

    原文:WPF 将图片进行灰度处理 处理前:      处理后:   这个功能使用使用了 FormatConvertedBitmap(为BitmapSource提供像素格式转换功能)   代码如下:   ...

  4. Hibernate入门配置案例

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自 ...

  5. 数据源Source 目标Target

    数据源Source-目标Target 数据源实现INotifyPropertyChanged接口,实现“通知”目标实现依赖属性 举例 后台的数据源,实现INotifyPropertyChanged接口 ...

  6. WPF数据验证方式

    WPF有两种数据验证的方式: 1 在数据对象上进行验证:普通属性验证或者实现IDataErrorInfo接口 2 可以再绑定规则上进行验证:ExceptionValidationRule异常验证规则 ...

  7. ORM 集合

    1.EF   https://github.com/aspnet 2.Chloe.ORM http://www.cnblogs.com/so9527/p/5809089.html http://www ...

  8. Gralde 网络代理

    Gralde 网络代理 Gradle在编译项目的时候,需要下载一些依赖.墙外的网络就需要设置代理了. 设置的方法,见文档: Accessing the web through a HTTP proxy ...

  9. Windows实用小工具-问题步骤记录器

    今晚给大家介绍个实用的好工具,可以做简单的问题记录,再也不用截图加注释这么辛苦了····· 经测试,这东东在win7,2008 及2008R2里适用,也就是说,在win7以上的系统中才有.好了,下面直 ...

  10. BackgroundWorker 简单使用教程 多个线程的创建

    原文:BackgroundWorker 简单使用教程 多个线程的创建 BackgroundWorker是一个非常不错的线程控件,能避免界面假死,让线程操作你想要做的事,它学习起来很简单,但是能实现很强 ...