#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> #include<stack> #include<queue> #include<vector> using namespace std; char data[33][33][33]; int visit[33][33][33]; int L,R,C; struct node { int l,r,c; }lis; queue<node>grid; int bfs() { int a_x[]={0,0,-1,1,0,0}; int a_y[]={1,-1,0,0,0,0}; int leb[]={0,0,0,0,1,-1}; while(!grid.empty()) { lis=grid.front();grid.pop(); int p=lis.r; int q=lis.c;int Le=lis.l; if(data[Le][p][q]=='E') return visit[Le][p][q]; for(int i=0;i<6;i++) { int s=a_x[i]+p; int d=a_y[i]+q; int f=leb[i]+Le; if((s>=1 && s<=R) && (d>=1 && d<=C)&& (f>=1 && f<=L) && data[f][s][d]!='#' && visit[f][s][d]==0) { visit[f][s][d]=1+visit[Le][p][q]; lis.l=f;lis.r=s,lis.c=d;grid.push(lis); } } } return -1; } int main() { // freopen("c:\\temp\\in.txt","r",stdin); while(scanf("%d %d %d",&L,&R,&C)==3) { if(L==0 && R==0 && C==0) return 0; int output=-1; memset(visit,0,sizeof visit); for(int i=1;i<=L;i++) { for(int j=1;j<=R;j++) { for(int k=1;k<=C;k++) { cin>>data[i][j][k]; } } } int start=0; for(int i=1;i<=L && !start;i++) { for(int j=1;j<=R && !start;j++) { for(int k=1;k<=C && !start;k++) { if(data[i][j][k]=='S') { visit[i][j][k]=1; lis.l=i; lis.r=j; lis.c=k;start=1; grid.push(lis); output=bfs();break; } } } } if(output==-1) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",output-1); while(!grid.empty()) grid.pop(); } return 0; }
বুধবার, ১ জানুয়ারী, ২০১৪
Solution code of uva 532-Dungeon Master
Labels:
uva solution
এতে সদস্যতা:
মন্তব্যগুলি পোস্ট করুন (Atom)
0 comments:
একটি মন্তব্য পোস্ট করুন