1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include<bits/stdc++.h> using namespace std; const int N=105; struct Coo{ int x,y,z; }; char g[N][N][N]; int d[N][N][N]; int l,r,c; int dx[]={1,-1,0,0,0,0},dy[]={0,0,1,-1,0,0},dz[]={0,0,0,0,1,-1}; void bfs(Coo st,Coo ed){ d[st.x][st.y][st.z]=0; queue<Coo>q; q.push(st); while(!q.empty()){ auto t=q.front(); q.pop(); for(int i=0;i<6;i++){ int x=t.x+dx[i],y=t.y+dy[i],z=t.z+dz[i]; if(x>=0&&x<r&&y>=0&&y<c&&z>=0&&z<l){ if(d[x][y][z]==-1&&g[x][y][z]!='#'){ d[x][y][z]=d[t.x][t.y][t.z]+1; q.push({x,y,z}); } } } } if(d[ed.x][ed.y][ed.z]!=-1) cout<<"Escaped in "<<d[ed.x][ed.y][ed.z]<<" minute(s)."<<endl; else cout<<"Trapped!"<<endl; } int main(){ while(1){ Coo st,ed; memset(d,-1,sizeof d); scanf("%d%d%d",&l,&r,&c);if(l==0) break; for(int i=0;i<l;i++) for(int j=0;j<r;j++) for(int k=0;k<c;k++){ cin>>g[j][k][i]; if(g[j][k][i]=='S') st={j,k,i}; i ed={j,k,i}; } bfs(st,ed); } }
|