// aarifshuvo ``CSEJU #include <bits/stdc++.h> #define ll long long #define pb push_back #define SZ(x) ((int)(x).size()) #define scl(x) scanf("%lld", &x) #define scll(x,y) scanf("%lld %lld", &x, &y) #define all(x) (x).begin(),(x).end() #define mem(a,d) memset(a,d,sizeof a) #define REP(i,n) for(int i=0;i<n;i++) #define REV(i,n) for(int i=n-1;i>=0;i--) #define FOR(i,a,b) for(int i=a;i<=b;i++) #define pri(a) cout<<a<<endl #define prii(a,b) cout<<a<<" "<<b<<endl using namespace std; #define inf 123456789 ll l,r,c; string sa[33][33]; bool vis[33][33][33]; int d[33][33][33]; struct point { int x,y,z; }; int dx[] = {1,-1,0,0,0,0}; int dy[] = {0,0,1,-1,0,0}; int dz[] = {0,0,0,0,1,-1}; void BFS(point src) { mem(d,0); mem(vis,0); queue<point> Q; point u,v; vis[src.x][src.y][src.z] = 1; d[src.x][src.y][src.z] = 0; Q.push(src); while(!Q.empty()) { u = Q.front(); Q.pop(); // cout << u.x << " " << u.y << " " << u.z << endl; REP(i,6) { v.x = u.x + dx[i]; v.y = u.y + dy[i]; v.z = u.z + dz[i]; if(v.x>=0 and v.x<l and v.y>=0 and v.y<r and v.z>=0 and v.z<c) { if(vis[v.x][v.y][v.z]==0 and sa[v.x][v.y][v.z]!='#') { // cout << " v---- "; cout << v.x << " " << v.y << " " << v.z << endl; vis[v.x][v.y][v.z] = 1; d[v.x][v.y][v.z] = d[u.x][u.y][u.z] + 1; Q.push(v); } } } } } int main() { ll sx,sy,sz,ex,ey,ez; while(scanf("%lld%lld%lld", &l, &r, &c)==3 and l+r+c) { REP(i,l) { REP(j,r) cin>>sa[i][j]; } REP(i,l) { REP(j,r) { REP(k,c) { if(sa[i][j][k]=='S') sx=i, sy=j, sz = k; if(sa[i][j][k]=='E') ex=i, ey=j, ez = k; } } } point src; src.x = sx, src.y = sy, src.z = sz; BFS(src); if(!vis[ex][ey][ez]) printf("Trapped!\n"); else { printf("Escaped in %d minute(s).\n", d[ex][ey][ez]); } } return 0; }
~Be glad of life because it gives you the chance to love and to work and to play and to look at the stars.~
Saturday, June 3, 2017
UVa 532 - Dungeon Master
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment