Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 16005 | Accepted: 6208 |
Description
Input
Output
Escaped in x minute(s).
Trapped!
Sample Input
3 4 5 S.... .###. .##.. ###.# ##### ##### ##.## ##... ##### ##### #.### ####E 1 3 3 S## #E# ### 0 0 0
Sample Output
Escaped in 11 minute(s). Trapped!
3D迷宫,写着练练手!!!!
AC代码如下:
#include<iostream> #include<queue> #include<cstring> #include<cstdio> using namespace std; int dx[6]={1,0,-1,0,0,0}; int dy[6]={0,1,0,-1,0,0}; int dz[6]={0,0,0,0,1,-1}; char a[40][40][40]; int vis[40][40][40]; int x,y,z; int xx,yy,zz,xxx,yyy,zzz; struct H { int x,y,z,s; }; int bfs(int xa,int ya,int za) { int i; queue<H> q; H a,b,c; a.x=xa; a.y=ya; a.z=za; a.s=0; q.push(a); while(!q.empty()) { b=q.front(); q.pop(); if(b.x==xxx&&b.y==yyy&&b.z==zzz) return b.s; for(i=0;i<6;i++) { int xs,ys,zs; xs=b.x+dx[i]; ys=b.y+dy[i]; zs=b.z+dz[i]; if(xs>=0&&xs<x&&ys>=0&&ys<y&&zs>=0&&zs<z&&!vis[zs][ys][xs]) { c.x=xs;c.y=ys;c.z=zs;c.s=b.s+1; vis[zs][ys][xs]=1; q.push(c); } } } return 0; } int main() { int i,j,l; int ans; while(cin>>z>>y>>x,(x||y||z)) { memset(vis,0,sizeof vis); for(l=0;l<z;l++) { for(i=0;i<y;i++) cin>>a[l][i]; } for(l=0;l<z;l++) for(i=0;i<y;i++) for(j=0;j<x;j++) if(a[l][i][j]=='S') {zz=l;yy=i;xx=j;} else if(a[l][i][j]=='E') {zzz=l;yyy=i;xxx=j;} else if(a[l][i][j]=='#') vis[l][i][j]=1; vis[zz][yy][xx]=1; ans=bfs(xx,yy,zz); if(ans==0) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",ans); } return 0; }
POJ 2251 Dungeon Master,布布扣,bubuko.com
原文地址:http://blog.csdn.net/hanhai768/article/details/37612047