#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
using namespace std;
char data[33][33][33];
int visit[33][33][33];
int L,R,C;
struct node
{
int l,r,c;
}lis;
queue<node>grid;
int bfs()
{
int a_x[]={0,0,-1,1,0,0};
int a_y[]={1,-1,0,0,0,0};
int leb[]={0,0,0,0,1,-1};
while(!grid.empty())
{
lis=grid.front();grid.pop();
int p=lis.r; int q=lis.c;int Le=lis.l;
if(data[Le][p][q]=='E')
return visit[Le][p][q];
for(int i=0;i<6;i++)
{
int s=a_x[i]+p;
int d=a_y[i]+q;
int f=leb[i]+Le;
if((s>=1 && s<=R) && (d>=1 && d<=C)&& (f>=1 && f<=L) && data[f][s][d]!='#' && visit[f][s][d]==0)
{
visit[f][s][d]=1+visit[Le][p][q];
lis.l=f;lis.r=s,lis.c=d;grid.push(lis);
}
}
}
return -1;
}
int main()
{
// freopen("c:\\temp\\in.txt","r",stdin);
while(scanf("%d %d %d",&L,&R,&C)==3)
{
if(L==0 && R==0 && C==0)
return 0;
int output=-1;
memset(visit,0,sizeof visit);
for(int i=1;i<=L;i++)
{
for(int j=1;j<=R;j++)
{
for(int k=1;k<=C;k++)
{
cin>>data[i][j][k];
}
}
}
int start=0;
for(int i=1;i<=L && !start;i++)
{
for(int j=1;j<=R && !start;j++)
{
for(int k=1;k<=C && !start;k++)
{
if(data[i][j][k]=='S')
{
visit[i][j][k]=1;
lis.l=i;
lis.r=j;
lis.c=k;start=1;
grid.push(lis);
output=bfs();break;
}
}
}
}
if(output==-1)
printf("Trapped!\n");
else printf("Escaped in %d minute(s).\n",output-1);
while(!grid.empty())
grid.pop();
}
return 0;
}
বুধবার, ১ জানুয়ারী, ২০১৪
Solution code of uva 532-Dungeon Master
Labels:
uva solution
এতে সদস্যতা:
মন্তব্যগুলি পোস্ট করুন (Atom)
0 comments:
একটি মন্তব্য পোস্ট করুন