• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            心如止水
            Je n'ai pas le temps
            posts - 400,comments - 130,trackbacks - 0
            題目大意:你如今處在一個3D空間中,每單位時間可以東、西、南、北、上、下六個方向走,要求在最短的時間內到達終點。
            典型的BFS,116行的代碼一次AC也算是增加信心了。
              1 #include<stdio.h>
              2 const long maxn=37,maxlen=maxn*maxn*maxn,INF=200007;
              3 const long xd[]={-1,1,0,0,0,0},yd[]={0,0,-1,0,1,0},zd[]={0,0,0,1,0,-1};
              4 typedef struct
              5 {
              6     long x,y,z;
              7 }point;
              8 typedef struct
              9 {
             10     long front,rear,count;
             11     point item[maxlen];
             12 }queue;
             13 void clear(queue &q)
             14 {
             15     q.count=0;
             16     q.front=0;
             17     q.rear=-1;
             18 }
             19 bool empty(queue &q)
             20 {
             21     return (q.count==0);
             22 }
             23 void push(queue &q,point x)
             24 {
             25     q.rear++;
             26     q.item[q.rear]=x;
             27     q.count++;
             28 }
             29 void pop(queue &q,point &x)
             30 {
             31     x=q.item[q.front];
             32     q.front++;
             33     q.count--;
             34 }
             35 //  Queue
             36 
             37 int main()
             38 {
             39     /*
             40     freopen("data.in","r",stdin);
             41     freopen("data.out","w",stdout);
             42     //*/
             43     long l,r,c;
             44     long g[maxn][maxn][maxn],d[maxn][maxn][maxn];
             45     bool used[maxn][maxn][maxn];
             46     while(scanf("%ld%ld%ld",&l,&r,&c)==3)
             47     {
             48        if(l==0||r==0||c==0break;
             49        getchar();
             50        point begin,end;
             51        for(long k=1;k<=l;k++)
             52        {
             53           for(long i=1;i<=r;i++)
             54           {
             55              for(long j=1;j<=c;j++)
             56              {
             57                 char tmp;
             58                 scanf("%c",&tmp);
             59                 if(tmp=='S')
             60                 {
             61                    begin.x=k;begin.y=i;begin.z=j;
             62                    g[k][i][j]=7;
             63                 }
             64                 else if(tmp=='E')
             65                 {
             66                    end.x=k;end.y=i;end.z=j;
             67                    g[k][i][j]=-1;
             68                 }
             69                 else if(tmp=='.')
             70                   g[k][i][j]=1;
             71                 else if(tmp=='#')
             72                   g[k][i][j]=0;
             73              }
             74              getchar();
             75           }
             76           getchar();
             77        }
             78        //  Input
             79        
             80        for(long i=1;i<=l;i++)
             81          for(long j=1;j<=r;j++)
             82            for(long k=1;k<=c;k++)
             83            {
             84               d[i][j][k]=INF;
             85               used[i][j][k]=false;
             86            }
             87        d[begin.x][begin.y][begin.z]=0;
             88        //  Clear
             89        
             90        queue q;clear(q);
             91        used[begin.x][begin.y][begin.z]=true;
             92        push(q,begin);
             93        while(!empty(q))
             94        {
             95           point tmp,newp;
             96           pop(q,tmp);
             97           long xx=tmp.x,yy=tmp.y,zz=tmp.z;
             98           for(long k=0;k<6;k++)
             99           {
            100              long tx=xx+xd[k],ty=yy+yd[k],tz=zz+zd[k];
            101              if(tx>=1&&tx<=l&&ty>=1&&ty<=r&&tz>=1&&tz<=c&&g[tx][ty][tz]&&!used[tx][ty][tz])
            102              {
            103                 d[tx][ty][tz]=d[xx][yy][zz]+1;
            104                 used[tx][ty][tz]=true;
            105                 newp.x=tx;newp.y=ty;newp.z=tz;
            106                 push(q,newp);
            107              }
            108           }
            109        }
            110        if(d[end.x][end.y][end.z]<INF)
            111          printf("Escaped in %ld minute(s).\n",d[end.x][end.y][end.z]);
            112        else printf("Trapped!\n");
            113     }
            114 return 0;
            115 }
            116 

            posted on 2010-01-23 11:29 lee1r 閱讀(447) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:搜索
            97久久超碰国产精品2021| 久久国产视屏| 久久久久久久久久免免费精品| 国内精品久久久久久久97牛牛 | 亚洲国产日韩欧美综合久久| 久久精品国产99国产精品| 亚洲精品97久久中文字幕无码| 国内精品伊人久久久久妇| 99久久精品免费看国产一区二区三区 | 亚洲精品美女久久久久99| 午夜不卡888久久| 99精品国产99久久久久久97| 久久天天躁狠狠躁夜夜网站| 7777精品伊人久久久大香线蕉| 久久精品国产亚洲av日韩| 精品久久久久久久国产潘金莲| 精品久久久久久无码专区不卡| 一本一本久久a久久精品综合麻豆| 日日噜噜夜夜狠狠久久丁香五月 | 国产精品欧美久久久久天天影视| 狠狠色婷婷久久一区二区| 狠狠色丁香久久综合婷婷| 久久99国产精品尤物| 久久一区二区三区99| 久久久WWW免费人成精品| 色综合久久久久久久久五月| 久久久不卡国产精品一区二区| 久久久精品一区二区三区| 亚洲乱亚洲乱淫久久| 久久国产色AV免费看| 亚洲AV无码久久寂寞少妇| 三级三级久久三级久久| 三级韩国一区久久二区综合| 久久久久久亚洲精品无码| 日本精品久久久久中文字幕8| 久久99国产乱子伦精品免费| 成人久久免费网站| 麻豆一区二区99久久久久| 亚洲AV日韩精品久久久久久| 一本一道久久综合狠狠老| 中文字幕人妻色偷偷久久 |