您的位置:首页 > 其它

UVA532 - Dungeon Master(裸BFS)

2012-09-07 20:34 232 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=473

没什么意思

View Code

#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
char s[31][31][31];
struct node
{
int x,y,z,num;
}q[100001];
int d,p,n,m,o,f[31][31][31],re[7][3] = {{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}};
void inque(int x,int y,int z)
{
d++;
q[d].x = x;
q[d].y = y;
q[d].z = z;
}
int judge(int x,int y,int z)
{
if(x<1||x>n||y<1||y>m||z<1||z>o)
return 0;
if(f[x][y][z])
return 0;
if(s[x][y][z]=='#')
return 0;
return 1;
}
int main()
{
int i,j,k,a[5];
while(scanf("%d%d%d",&n,&m,&o)!=EOF)
{
memset(f,0,sizeof(f));
if(n==0&&m==0&&o==0)
break;
for(i = 1; i <= n ; i++)
{
getchar();
for(j = 1 ; j <= m ; j++)
{
for(k = 1; k <= o ; k++)
{
s[i][j][k] = getchar();
if(s[i][j][k]=='S')
{
a[1] = i;
a[2] = j;
a[3] = k;
}
}
getchar();
}
}
d = 1;
p = 0;
q[d].x = a[1];
q[d].y = a[2];
q[d].z = a[3];
q[d].num = 0;
int flag = 0;
while(p!=d)
{
p++;
int tx = q[p].x;
int ty = q[p].y;
int tz = q[p].z;
int tnum = q[p].num;
if(s[tx][ty][tz]=='E')
{
flag = 1;
break;
}
for(i = 0; i < 6 ; i++)
{
int px = tx+re[i][0];
int py = ty+re[i][1];
int pz = tz+re[i][2];
if(judge(px,py,pz))
{
f[px][py][pz] = 1;
inque(px,py,pz);
q[d].num = q[p].num+1;
}
}
}
if(flag)
printf("Escaped in %d minute(s).\n",q[p].num);
else
printf("Trapped!\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: