#include<iostream> #include<Cstring> #include<queue> using namespace std; int n,m,b,a1,b1,c1; struct node{ int x;int y;int z;int d; }; int x[6]={0,-1,0,1,0,0}; int y[6]={-1,0,1,0,0,0}; int z[6]={0,0,0,0,1,-1}; char c[35][35][35]; bool f[35][35][35]; int bfs(){ struct node l; l.x=a1; l.y=b1; l.z=c1; l.d=0; queue<node>q; q.push(l); while(!q.empty()){ for(int i=0;i<6;++i){ int xx=q.front().x+x[i]; int yy=q.front().y+y[i]; int zz=q.front().z+z[i]; if(xx>0&&xx<=n&&yy>0&&yy<=m&&zz>0&&zz<=b&&c[xx][yy][zz]!='#'&&f[xx][yy][zz]==false){ f[xx][yy][zz]=true; if(c[xx][yy][zz]=='E') return q.front().d+1; struct node k; k.x=xx; k.y=yy; k.z=zz; k.d=q.front().d+1; q.push(k); } } q.pop(); } return 0; } int main(){ while(scanf("%d %d %d",&n,&m,&b)){ getchar(); if(n==0&&m==0&&b==0) break; memset(f,false,sizeof(f)); for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ for(int k=1;k<=b;++k){ scanf("%c",&c[i][j][k]); if(c[i][j][k]=='S') a1=i,b1=j,c1=k; } getchar(); } getchar(); } int ans=bfs(); if(ans==0) cout<<"Trapped!"<<endl; else printf("Escaped in %d minute(s).\n",ans); } } |
Double click to view unformatted code.