Description
Is an escape possible? If yes, how long will it take?
Input
The input consists of a number of dungeons. Each dungeon description starts with a line containing three integers L, R and C (all limited to 30 in size).
L is the number of levels making up the dungeon.
R and C are the number of rows and columns making up the plan of each level.
Then there will follow L blocks of R lines each containing C characters. Each character describes one cell of the dungeon. A cell full of rock is indicated by a '#' and empty cells are represented by a '.'. Your starting position is indicated by 'S' and the exit by the letter 'E'. There's a single blank line after each level. Input is terminated by three zeroes for L, R and C.
Output
Each maze generates one line of output. If it is possible to reach the exit, print a line of the form
Escaped in x minute(s).
where x is replaced by the shortest time it takes to escape.
If it is not possible to escape, print the line
Trapped!
Sample Input
3 4 5
S....
.###.
.##..
###.#
#####
#####
##.##
##...
#####
#####
#.###
####E
1 3 3
S##
#E#
###
0 0 0
Sample Output
Escaped in 11 minute(s).
Trapped!
Input
L is the number of levels making up the dungeon.
R and C are the number of rows and columns making up the plan of each level.
Then there will follow L blocks of R lines each containing C characters. Each character describes one cell of the dungeon. A cell full of rock is indicated by a '#' and empty cells are represented by a '.'. Your starting position is indicated by 'S' and the exit by the letter 'E'. There's a single blank line after each level. Input is terminated by three zeroes for L, R and C.
Output
Sample Input
#####
#####
##.##
##...
#####
#####
#.###
####E
1 3 3
S##
#E#
###
0 0 0
Sample Output
#include<cstdio> #include<cstring> #include<queue> using namespace std; const int dir[6][3]={{0,-1,0},{0,1,0},{0,0,-1},{0,0,1},{1,0,0},{-1,0,0}}; struct node{int x,y,z,step;}; char matrix[31][31][31]; bool used[31][31][31]; int n; int startx,starty,startz,endx,endy,endz; int l,r,c; node cur,pre; int bfs() { int i,x,y,z; queue<node>que; cur.x=startx,cur.y=starty,cur.z=startz,cur.step=0; memset(used,0,sizeof(used)); used[startx][starty][startz]=1; que.push(cur); while(!que.empty()) { cur=que.front(),que.pop(); if(cur.x==endx&&cur.y==endy&&cur.z==endz) return cur.step; for(i=0;i<6;i++) { x=cur.x+dir[i][0]; y=cur.y+dir[i][1]; z=cur.z+dir[i][2]; if(x>=0&&x<l&&y>=0&&y<r&&z>=0&&z<=c&&!used[x][y][z]&&matrix[x][y][z]!='#') { used[x][y][z]=1; pre.x=x,pre.y=y,pre.z=z,pre.step=cur.step+1; que.push(pre); } } } return -1; } int main() { int i,j,k,ans; while(scanf("%d%d%d",&l,&r,&c),l||r||c) { getchar(); for(i=0;i<l;i++) { for(j=0;j<r;j++) { for(k=0;k<c;k++) { scanf("%c",&matrix[i][j][k]); if(matrix[i][j][k]=='S') { startx=i,starty=j,startz=k; } else if(matrix[i][j][k]=='E') { endx=i,endy=j,endz=k; } } getchar(); } getchar(); } ans=bfs(); if(ans==-1) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",ans); } return 0; }