Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<bits/stdc++.h>
- using namespace std;
- int l,r,c;
- bool visited[50][50][50];
- char cell[50][50][50];
- int fz[]={0,0,0,0,-1,1};
- int fy[]={0,0,-1,1,0,0};
- int fx[]={-1,1,0,0,0,0};
- int dis[50][50][50];
- struct structure
- {
- int z,x,y;
- };
- void mybfs(int sx,int sy,int sz)
- {
- memset(dis,0,sizeof dis);
- structure st;
- visited[sz][sx][sy]=true;
- dis[sz][sx][sy]=0;
- st.z=sz;
- st.x=sx;
- st.y=sz;
- queue<structure>q;
- q.push(st);
- while(!q.empty())
- {
- structure p,p1;
- p=q.front();
- q.pop();
- for(int i=0;i<6;i++)
- {
- int tx=p.x+fx[i];
- int ty=p.y+fy[i];
- int tz=p.z+fz[i];
- if(tx>=0 && tz<l && ty>=0 && tx<r && tz>=0 && ty<c && visited[tz][tx][ty]==false)
- {
- dis[tz][tx][ty]=dis[p.z][p.x][p.y]+1;
- visited[tz][tx][ty]=true;
- p1.x=tx;
- p1.y=ty;
- p1.z=tz;
- //cout<<tx<<" "<<ty<<" "<<tz<<endl;
- q.push(p1);
- }
- }
- }
- }
- int main()
- {
- while(scanf("%d %d %d",&l,&r,&c)==3)
- {
- if(l==0 && r==0 && c==0)
- break;
- int i,j,k,sx,sy,sz,dx,dy,dz;
- for(i=0;i<l;i++)
- {
- for(j=0;j<r;j++)
- {
- for(k=0;k<c;k++)
- {
- cin>>cell[i][j][k];
- if(cell[i][j][k]=='#')
- {
- visited[i][j][k]=true;
- }
- else if(cell[i][j][k]=='S')
- {
- sz=i,sx=j,sy=k;
- }
- else if(cell[i][j][k]=='E')
- {
- dz=i,dx=j,dy=k;
- }
- }
- }
- }
- mybfs(sx,sy,sz);
- int ans=dis[dz][dx][dy];
- if(ans==0)
- printf("Trapped!\n");
- else
- printf("Escaped in %d minute(s).\n",ans);
- for(i=0;i<51;i++){
- for(j=0;j<51;j++)
- for(k=0;k<51;k++)
- cell[i][j][k]=0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment