#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define M 31
using namespace std;
char DUNG[M][M][M],dummy[5];
int next [6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};
int L,R,C;
int BFS(int dx,int dy,int dz);
struct Node
{
int x,y,z;
};
int main()
{
int i,j,k,dx,dy,dz,f,time;
//freopen("in.txt","r",stdin);
while(scanf("%d%d%d\n",&L,&R,&C)&&(L+R+C))
{
f=0;
for(i=0;i<L;i++)
{
for(j=0;j<R;j++)
{
gets(DUNG[i][j]);
if(!f)
for(k=0;DUNG[i][j][k];k++)
{
if(DUNG[i][j][k]=='S')
{
f=1;
dx=i,dy=j,dz=k;
}
}
}
gets(dummy);
}
time=BFS(dx,dy,dz);
if(time<0)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",time);
}
return 0;
}
int BFS(int dx,int dy,int dz)
{
int i,x,y,z,tx,ty,tz;
int d[M][M][M];
DUNG[dx][dy][dz]='#';
queue<Node>Q;
Node N;
d[dx][dy][dz]=0;
N.x=dx;N.y=dy;N.z=dz;
Q.push(N);
while(!Q.empty())
{
N=Q.front();Q.pop();
x=N.x;y=N.y;z=N.z;
for(i=0;i<6;i++)
{
tx=x+next[i][0];
ty=y+next[i][1];
tz=z+next[i][2];
if(tx>=0&&tx<L&&ty>=0&&ty<R&&tz>=0&&tz<C&&DUNG[tx][ty][tz]!='#')
{
d[tx][ty][tz]=d[x][y][z]+1;
if(DUNG[tx][ty][tz]=='E')return d[tx][ty][tz];
DUNG[tx][ty][tz]='#';
N.x=tx;N.y=ty;N.z=tz;
Q.push(N);
}
}
}
return -1;
}
#include<cstdio>
#include<queue>
#include<cstring>
#define M 31
using namespace std;
char DUNG[M][M][M],dummy[5];
int next [6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};
int L,R,C;
int BFS(int dx,int dy,int dz);
struct Node
{
int x,y,z;
};
int main()
{
int i,j,k,dx,dy,dz,f,time;
//freopen("in.txt","r",stdin);
while(scanf("%d%d%d\n",&L,&R,&C)&&(L+R+C))
{
f=0;
for(i=0;i<L;i++)
{
for(j=0;j<R;j++)
{
gets(DUNG[i][j]);
if(!f)
for(k=0;DUNG[i][j][k];k++)
{
if(DUNG[i][j][k]=='S')
{
f=1;
dx=i,dy=j,dz=k;
}
}
}
gets(dummy);
}
time=BFS(dx,dy,dz);
if(time<0)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",time);
}
return 0;
}
int BFS(int dx,int dy,int dz)
{
int i,x,y,z,tx,ty,tz;
int d[M][M][M];
DUNG[dx][dy][dz]='#';
queue<Node>Q;
Node N;
d[dx][dy][dz]=0;
N.x=dx;N.y=dy;N.z=dz;
Q.push(N);
while(!Q.empty())
{
N=Q.front();Q.pop();
x=N.x;y=N.y;z=N.z;
for(i=0;i<6;i++)
{
tx=x+next[i][0];
ty=y+next[i][1];
tz=z+next[i][2];
if(tx>=0&&tx<L&&ty>=0&&ty<R&&tz>=0&&tz<C&&DUNG[tx][ty][tz]!='#')
{
d[tx][ty][tz]=d[x][y][z]+1;
if(DUNG[tx][ty][tz]=='E')return d[tx][ty][tz];
DUNG[tx][ty][tz]='#';
N.x=tx;N.y=ty;N.z=tz;
Q.push(N);
}
}
}
return -1;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.