1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<cstdlib> 5 #include<queue> 6 #include<algorithm> 7 #define MAXN 40 8 using namespace std; 9 10 char map[MAXN][MAXN][MAXN]; 11 bool vis[MAXN][MAXN][MAXN]; 12 int s[][10]= {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; 13 int ex,ey,ez,sx,sy,sz,zz,yy,xx,l,r,c,k; 14 struct node 15 { 16 int x,y,z; 17 int step; 18 }st,st1; 19 20 void bfs(int x,int y,int z) 21 { 22 memset(vis,false,sizeof(vis)); 23 queue<node>q; 24 st.x=x; 25 st.y=y; 26 st.z=z; 27 st.step=0; 28 q.push(st); 29 vis[z][x][y]=true; 30 while(!q.empty()) 31 { 32 st1=q.front(); 33 q.pop(); 34 if(st1.x==ex&&st1.y==ey&&st1.z==ez) {k=st1.step;return;} 35 for(int i=0; i<6; i++) 36 { 37 zz=st1.z+s[i][0]; 38 xx=st1.x+s[i][1]; 39 yy=st1.y+s[i][2]; 40 if((zz>=0&&xx>=0&&yy>=0&&zz<l&&xx<r&&yy<c)&&map[zz][xx][yy]!='#'&&!vis[zz][xx][yy]) 41 { 42 st.x=xx; 43 st.y=yy; 44 st.z=zz; 45 st.step=st1.step+1; 46 q.push(st); 47 vis[zz][xx][yy]=true; 48 } 49 } 50 } 51 } 52 int main() 53 { 54 while(scanf("%d%d%d",&l,&r,&c)!=EOF) 55 { 56 k=0; 57 if(l==0&&r==0&&c==0) break; 58 for(int i=0; i<l; i++) 59 { 60 for(int j=0; j<r; j++) 61 { 62 scanf("%s",map[i][j]); 63 getchar(); 64 for(int k=0; k<c; k++) 65 { 66 if(map[i][j][k]=='S') 67 { 68 sz=i; 69 sx=j; 70 sy=k; 71 } 72 else if(map[i][j][k]=='E') 73 { 74 ez=i; 75 ex=j; 76 ey=k; 77 } 78 } 79 } 80 getchar(); 81 } 82 bfs(sx,sy,sz); 83 if(k==0) 84 printf("Trapped!\n"); 85 else 86 printf("Escaped in %d minute(s).\n",k); 87 } 88 //system("pause"); 89 return 0; 90 }