Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define PB push_back
- #define ZERO (1e-10)
- #define INF (1<<29)
- #define CL(A,I) (memset(A,I,sizeof(A)))
- #define DEB printf("DEB!\n");
- #define D(X) cout<<" "<<#X": "<<X<<endl;
- #define EQ(A,B) (A+ZERO>B&&A-ZERO<B)
- typedef long long ll;
- typedef long double ld;
- typedef pair<ll,ll> pll;
- typedef vector<int> vi;
- typedef pair<int,int> ii;
- typedef vector<ii> vii;
- #define IN(n) int n;scanf("%d",&n);
- #define FOR(i, m, n) for (int i(m); i < n; i++)
- #define REP(i, n) FOR(i, 0, n)
- #define F(n) REP(i, n)
- #define FF(n) REP(j, n)
- #define FT(m, n) FOR(k, m, n)
- #define aa first
- #define bb second
- void ga(int N,int *A){F(N)scanf("%d",A+i);}
- #define in(X,Y,Z) (~X&&~Y&&~Z&&X<N&&Y<M&&Z<P)
- char s[32][32][32];
- int sx[]={1,-1,0,0,0,0},sy[]={0,0,1,-1,0,0},sz[]={0,0,0,0,1,-1},N,M,P,cn[32][32][32],qx[1<<15],qy[1<<15],qz[1<<15],qp[1<<15];
- void bfs(int x,int y,int z){
- CL(cn,-1);
- cn[*qx=x][*qy=y][*qz=z]=0;
- int b(-1),e(1),tx,ty,tz,p;
- while(++b<e){
- x=qx[b],y=qy[b],z=qz[b],p=qp[b];
- F(6){
- tx=x+sx[i],ty=y+sy[i],tz=z+sz[i];
- if(in(tx,ty,tz)&&!~cn[tx][ty][tz]&&s[tx][ty][tz]!=35)
- cn[tx][ty][tz]=qp[e]=p+1,qx[e]=tx,qy[e]=ty,qz[e++]=tz;
- }
- }
- }
- int main(void){
- int x,y,z,X,Y,Z;
- while(scanf("%d%d%d",&N,&M,&P),N){
- F(N)FF(M)scanf("%s",s[i][j]);
- F(N)FF(M)FT(0,P)if(s[i][j][k]=='S')x=i,y=j,z=k;
- else if(s[i][j][k]==69)X=i,Y=j,Z=k;
- bfs(x,y,z);
- if(~cn[X][Y][Z])printf("Escaped in %d minute(s).\n",cn[X][Y][Z]);
- else printf("Trapped!\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment