标签:
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!
三维迷宫水题
#include"cstdio" #include"queue" #include"cstring" using namespace std; const int MAXN=31; char dun[MAXN][MAXN][MAXN]; int vis[MAXN][MAXN][MAXN]; struct node{ int L,R,C; int step; node(int l,int r,int c,int s):L(l),R(r),C(c),step(s){} node(){} }; int l,r,c; int sl,sr,sc; int el,er,ec; int dl[6]={1,0,0,0,0,-1}; int dc[6]={0,1,0,-1,0,0}; int dr[6]={0,0,1,0,-1,0}; int bfs() { queue<node> que; que.push(node(sl,sr,sc,0)); vis[sl][sr][sc]=1; while(!que.empty()) { node now=que.front();que.pop(); if(now.L==el&&now.R==er&&now.C==ec) { return now.step; } for(int i=0;i<6;i++) { int nl=now.L+dl[i]; int nr=now.R+dr[i]; int nc=now.C+dc[i]; if(0<=nl&&nl<l&&0<=nr&&nr<r&&0<=nc&&nc<c&&!vis[nl][nr][nc]&&dun[nl][nr][nc]!=‘#‘) { vis[nl][nr][nc]=1; que.push(node(nl,nr,nc,now.step+1)); } } } return -1; } int main() { while(scanf("%d%d%d",&l,&r,&c)!=EOF&&l!=0) { memset(vis,0,sizeof(vis)); scanf("%*c"); for(int i=0;i<l;i++) { for(int j=0;j<r;j++) { for(int z=0;z<c;z++) { scanf("%c",&dun[i][j][z]); if(dun[i][j][z]==‘S‘) { sl=i,sr=j,sc=z; } if(dun[i][j][z]==‘E‘) { el=i,er=j,ec=z; } } scanf("%*c"); } scanf("%*c"); } int ans=bfs(); if(ans!=-1) { printf("Escaped in %d minute(s).\n",ans); } else { printf("Trapped!\n"); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5001706.html