//目录

Poj(2225),三维BFS

题目链接:http://poj.org/problem?id=2225

这里要注意的是,输入的是坐标x,y,z,那么这个点就是在y行,x列,z层上。

我竟然WA在了结束搜索上了,写成了输出s.step.我要调疯了。

#include <stdio.h>
#include <queue>
#include <string.h>

using namespace std;

struct Point
{
    int x,y,z;
    int step;
} points[1005];

char maps[15][15][15];
bool vis[15][15][15];

///上下前后左右
int to[6][3]= {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,-1},{0,0,1}};

int main()
{
    char str[20];
    while(scanf("%s",str)!=EOF)
    {
        memset(vis,false,sizeof(vis));

        int n;
        scanf("%d",&n);
        for(int i=0; i<n; i++)
            for(int j=0; j<n; j++)
                scanf("%s",maps[i][j]);

        int x1,y1,z1;   ///x 行,y列,z层
        int x2,y2,z2;
        scanf("%d%d%d%d%d%d",&y1,&x1,&z1,&y2,&x2,&z2);

        char tmp[20];
        scanf("%s",tmp);

        queue<Point> Q;
        Point s,next;
        s.x = x1;
        s.y = y1;
        s.z = z1;
        s.step = 0;
        Q.push(s);
        vis[s.z][s.x][s.y] = true;
        int ans = 0;
        bool flag = false;

        while(!Q.empty())
        {
            Point f;
            f = Q.front();
            Q.pop();
            if(f.x==x2&&f.y==y2&&f.z==z2)
            {
                flag = true;
                ans = f.step;
                break;
            }
            for(int i=0; i<6; i++)
            {
                next.x = f.x + to[i][1];
                next.y = f.y + to[i][2];
                next.z = f.z + to[i][0];


                if(next.x<0||next.x>=n||next.y<0||next.y>=n||next.z<0||next.z>=n)
                    continue;
                if(vis[next.z][next.x][next.y]||maps[next.z][next.x][next.y]=='X')
                    continue;

                next.step = f.step + 1;
                //printf("%d %d %d ",next.x,next.y,next.z);
                //printf("%d\n",next.step);
                vis[next.z][next.x][next.y] = true;
                Q.push(next);
            }
        }
        if(flag)
            printf("%d %d\n",n,ans);
        else printf("NO ROUTE\n");
    }
    return 0;
}

 

posted @ 2016-07-27 17:35  小草的大树梦  阅读(252)  评论(0编辑  收藏  举报