POJ 2251

Posted huluxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2251相关的知识,希望对你有一定的参考价值。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 #include <stack>
 7 #include <vector>
 8 #include <iomanip>
 9 using namespace std;
10 char a[35][35][35];
11 int vis[35][35][35];
12 int l,n,m,mmin;
13 int sl,sx,sy,el,ex,ey;
14 int dir[15][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
15 int panduan(int z,int x,int y)
16 {
17     return z>=0&&z<l&&x>=0&&x<n&&y>=0&&y<m;
18 }
19 
20 struct node
21 {
22     int x,y,z,f;
23 };
24 node be;
25 void bfs()
26 {
27     queue<node>q;
28     be.f=0;
29     q.push(be);
30     while(!q.empty())
31     {
32         node now=q.front();
33         q.pop();
34         if(a[now.z][now.x][now.y]==E)
35         {
36             mmin=min(mmin,now.f);
37             continue;
38         }
39         for(int i=0;i<6;i++)
40         {
41             int nl=now.z+dir[i][0];
42             int nx=now.x+dir[i][1];
43             int ny=now.y+dir[i][2];
44             if(a[nl][nx][ny]!=#&&vis[nl][nx][ny]==0&&panduan(nl,nx,ny))
45             {
46                 //printf("%d %d %d %d
",nl,nx,ny,now.f+1);
47                 vis[nl][nx][ny]=1;
48                 node nex;
49                 nex.z=nl,nex.x=nx,nex.y=ny,nex.f=now.f+1;
50                 q.push(nex);
51             }
52         }
53     }
54 }
55 int main(int argc, char *argv[])
56 {
57     while(scanf("%d%d%d",&l,&n,&m)!=EOF)
58     {
59         if(l==0&&n==0&&m==0)
60         break;
61         for(int i=0;i<l;i++)
62         {
63             for(int j=0;j<n;j++)
64             {
65                 getchar();
66                 scanf("%s",a[i][j]);
67                 for(int k=0;k<m;k++)
68                 {
69                     if(a[i][j][k]==S)
70                     {
71                         be.z=i;be.x=j;be.y=k;
72                     }
73                 }
74             }    
75         }
76         memset(vis,0,sizeof(vis));
77         vis[be.z][be.x][be.y]=1;
78         mmin=1e9;
79         bfs();
80         if(mmin==1e9)
81         printf("Trapped!
");
82         else
83         printf("Escaped in %d minute(s).
",mmin);
84     }
85     return 0;
86 }

 

以上是关于POJ 2251的主要内容,如果未能解决你的问题,请参考以下文章

POJ-2251-Dungeon Master

Dungeon Master POJ-2251 三维BFS

POJ 2251 Dungeon Master

POJ 2251 Dungeon Master

Poj2251 BFS模板题

POJ 2251 Dungeon Master (BFS)