码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2251 Dungeon Master (bfs)

时间:2015-07-27 00:01:55      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

 

 

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
char mat[50][50][50];
int vis[50][50][50];
int op[6][3]={0,-1,0, 0,1,0, 1,0,0, -1,0,0 ,0,0,1, 0,0,-1 };
int ok;
int z,n,m;
struct Node{
  int x,y,z;
  int rt;
};
Node now[200000];
bool isok(Node node)
{
    if(node.z<1||node.z>z||node.x<1||node.x>n||node.y<0||node.y>=m)
        return false;
    if(vis[node.z][node.x][node.y]==1||mat[node.z][node.x][node.y]==‘#‘)
        return false;
    return true;
}
void bfs(int si,int sj,int sk)  //z x y
{
   int front,rear;
   int x,y,z;
   front=0,rear=1;
   z=now[0].z=si;
   x=now[0].x=sj;
   y=now[0].y=sk;
   now[0].rt=0;
   vis[z][x][y]=1;
   while(front<rear)
   {
      // Node temp;
      z=now[front].z;
      x=now[front].x;
      y=now[front].y;
       if(mat[z][x][y]==‘E‘)
       {
           ok=1;
           printf("Escaped in %d minute(s).\n",now[front].rt);
       }

       for(int i=0;i<6;i++)
       {
           z=now[rear].z=now[front].z+op[i][0];
           x=now[rear].x=now[front].x+op[i][1];
           y=now[rear].y=now[front].y+op[i][2];
             now[rear].rt=now[front].rt+1;

           if(isok(now[rear]))
           {
               vis[z][x][y]=1;
               rear++;
           }
       }
       front++;
   }

}
int main()
{

    int i,j,k;
    int si,sj,sk;
    while(scanf("%d%d%d",&z,&n,&m)!=EOF)
    {
        if(z==0&&n==0&&m==0) break;
        ok=0;
        memset(vis,0,sizeof(vis));
        for(i=1;i<=z;i++)
        {
            for(j=1;j<=n;j++)
            {
               scanf("%s",mat[i][j]);
               for(k=0;k<m;k++)
               {
                   if(mat[i][j][k]==‘S‘)
                    {
                       si=i;sj=j;sk=k;
                    }
               }
            }
        }
        bfs(si,sj,sk);
        if(ok==0) printf("Trapped!\n");

    }
    return 0;
}

 

POJ 2251 Dungeon Master (bfs)

标签:

原文地址:http://www.cnblogs.com/sola1994/p/4678954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!