poj 2251 Dungeon Master(bfs)
2013-01-26 13:54
495 查看
题目:http://poj.org/problem?id=2251
View Code
View Code
#include <iostream> #include<cstdio> #include<cstring> #define pan(a,b,c) (a<=b&&b<=c) using namespace std; int dir[6][3]={{0,0,-1},{0,0,1},{-1,0,0},{1,0,0},{0,-1,0},{0,1,0}}; int ex,ey,ez; char str[35][35][35]; int map[35][35][35]; struct node { int x,y,z; int num; }que[30010]; int main() { int m,n,t; int i,j,k; int sx,sy,sz; while(scanf("%d%d%d%*c",&t,&m,&n)!=EOF) { if(t==0&&m==0&&n==0) break; for(i=1;i<=t;i++) { for(j=1;j<=m;j++) { for(k=1;k<=n;k++) { cin>>str[i][j][k]; if(str[i][j][k]=='S') { sx=i; sy=j; sz=k; } } } } memset(map,0,sizeof(map)); int head=0; int tail=1; que[0].x=sx; que[0].y=sy; que[0].z=sz; que[0].num=0; map[sx][sy][sz]=1; int xx,yy,zz; int flag=0; while(head<tail) { for(i=0;i<6;i++) { xx=que[head].x+dir[i][0]; yy=que[head].y+dir[i][1]; zz=que[head].z+dir[i][2]; if(str[xx][yy][zz]=='E') { printf("Escaped in %d minute(s).\n",que[head].num+1); flag=1; break; } if(pan(1,xx,t)&&pan(1,yy,m)&&pan(1,zz,n)&&map[xx][yy][zz]==0&&str[xx][yy][zz]=='.') { que[tail].x=xx; que[tail].y=yy; que[tail].z=zz; que[tail].num=que[head].num+1; map[xx][yy][zz]=1; tail++; } } if(flag) break; head++; } if(!flag) { puts("Trapped!"); } } return 0; }
相关文章推荐
- POJ 2251 Dungeon Master(BFS)
- POJ 2251-Dungeon Master(BFS-三维迷宫)
- POJ2251 - Dungeon Master - 三维bfs搜索
- [BFS]poj 2251 Dungeon Master
- POJ 2251 Dungeon Master(三维bfs)
- POJ 2251 Dungeon Master (三维BFS)
- poj-2251 Dungeon Master 三维BFS
- POJ 2251-Dungeon Master(BFS)
- POJ 2251 Dungeon Master ( BFS )
- 【POJ 2251】Dungeon Master(BFS)
- POJ 2251 Dungeon Master (三维BFS)
- POJ 2251 Dungeon Master(BFS)
- POJ - 2251 Dungeon Master (三维bfs)
- POJ 2251 Dungeon Master (BFS)
- 【POJ 2251】Dungeon Master(bfs)
- POJ-2251 Dungeon Master (BFS)
- POJ 2251 Dungeon Master(简单BFS)
- POJ - 2251 Dungeon Master (简单BFS)
- POJ - 2251 Dungeon Master(三维BFS)
- poj 2251 Dungeon Master (BFS)