poj 2251 6方向bfs

来源:互联网 发布:2017阅读软件排行 编辑:程序博客网 时间:2024/06/18 06:52
点击打开链接//6方向搜索#include <iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn=30+5;int dx[]={-1,1,0,0,0,0};int dy[]={0,0,-1,1,0,0};int dz[]={0,0,0,0,-1,1};int l,r,c;          //层数 行数 列数char field[maxn][maxn][maxn];int d[maxn][maxn][maxn];int sx,sy,sz;int gx,gy,gz;struct point{int x,y,z;point(int x,int y,int z):x(x),y(y),z(z) {}};void bfs(){       memset(d,-1,sizeof(d));       d[sx][sy][sz]=0;       queue<point>pq;       pq.push(point(sx,sy,sz));       while(!pq.empty())       {           point ss=pq.front();           pq.pop();           if(ss.x==gx&&ss.y==gy&&ss.z==gz) return;           for(int i=0;i<6;i++)           {               int nx=ss.x+dx[i],ny=ss.y+dy[i],nz=ss.z+dz[i];               if(nx>=0&&nx<l&&ny>=0&&ny<r&&nz>=0&&nz<c&&field[nx][ny][nz]!='#'&&d[nx][ny][nz]==-1) {                  pq.push(point(nx,ny,nz));                  d[nx][ny][nz]=d[ss.x][ss.y][ss.z]+1;               }           }       }}int main(){    while(scanf("%d%d%d",&l,&r,&c)==3)    {        if(!l&&!r&&!c) break;        for(int i=0;i<l;i++)             for(int j=0;j<r;j++)                  {                      scanf("%s",&field[i][j]);     //i层 j行                      for(int k=0;k<c;k++)                           {                               if(field[i][j][k]=='S') {                                sx=i;                                sy=j;                                sz=k;                               }                               if(field[i][j][k]=='E') {                                gx=i;                                gy=j;                                gz=k;                               }                           }                  }        bfs();        if(d[gx][gy][gz]==-1) printf("Trapped!\n");        else printf("Escaped in %d minute(s).\n",d[gx][gy][gz]);    }    return 0;}

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 万向德农股票 000559万向钱潮 万向钱潮股票 万向轮尺寸规格 传动轴万向节 行李箱万向轮拆图解 万向传动装置 600371万向德农股吧 万向轮拉杆箱 万向轮登机箱 600371万向德农 行李箱万向轮 万向集团旗下有哪几个公司 爱华仕万向轮拉杆箱 十字轴式万向联轴器 万向轮和单向轮 拉杆箱万向轮配件 万向钱潮股吧 万向钱潮000559 万向钱潮股票行情 杭州万向集团 000559股吧 000559 万象集团 万象集团简介 万和公棚 万和城 山西万和 万和电气 万和壁挂炉 万和热水器e 万和电话 万和城平台 张万和 万和天宜 万和集团 万和源 万和净水器 谦祥万和城 万和证券 万和热水