zoukankan      html  css  js  c++  java
  • hdu 1253 ( 胜利大逃亡 )

    http://acm.hdu.edu.cn/problemclass.php?id=268
    View Code
    Problem : 1253 ( 胜利大逃亡 ) Judge Status : Accepted

    自我感觉BFS难度1可以告一段落了。
    思路:
    这题和一般的BFS的做法是一样的m[k][i][j]
    =1表示第k块第i行第j列是墙,

    #include
    <iostream>
    #include
    <stdio.h>
    #include
    <queue>
    #include
    <algorithm>
    using namespace std;
    int m[51][51][51],vis[51][51][51];
    int a,b,c,t,ans;
    int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
    struct node
    {
    int x,y,z,dis;
    node(
    int _x=0,int _y=0,int _z=0,int _dis=0):x(_x),y(_y),z(_z),dis(_dis){};
    };

    void BFS()
    {
    queue
    <node> q;
    q.push(node(
    0,0,0,0));
    vis[
    0][0][0]=1;
    ans
    =-1;
    while(!q.empty())
    {
    node tt
    =q.front();
    q.pop();
    for(int k=0;k<6;k++)
    {
    int x=tt.x+dir[k][0];
    int y=tt.y+dir[k][1];
    int z=tt.z+dir[k][2];
    if(x>=0&&x<a&&y>=0&&y<b&&z>=0&&z<c&&!vis[x][y][z]&&m[x][y][z]==0)
    {
    vis[x][y][z]
    =1;
    q.push(node(x,y,z,tt.dis
    +1));
    if(x==a-1&&y==b-1&&z==c-1)
    {
    if(tt.dis+1<=t)ans=tt.dis+1;
    return;
    }
    }

    }
    }
    }
    int main()
    {
    int cas;
    scanf(
    "%d",&cas);
    while(cas--)
    {
    memset(vis,
    0,sizeof(vis));
    memset(m,
    0,sizeof(m));
    scanf(
    "%d%d%d%d",&a,&b,&c,&t);
    for(int k=0;k<a;k++)
    for(int i=0;i<b;i++)
    for(int j=0;j<c;j++)
    scanf(
    "%d",&m[k][i][j]);
    BFS();
    printf(
    "%d\n",ans);
    }
    }
  • 相关阅读:
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    Python for Data Science
    软件工程实践总结
  • 原文地址:https://www.cnblogs.com/sook/p/1993080.html
Copyright © 2011-2022 走看看