zoukankan      html  css  js  c++  java
  • hdu 1240 ( Asteroids! )

    View Code
    Problem : 1240 ( Asteroids! ) Judge Status : Accepted
    又是一道常规BFS
    #include
    <iostream>
    #include
    <string>
    #include
    <queue>
    using namespace std;
    string map[10][10],ss,end;
    int vis[10][10][10],dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
    int n,ok,ans;
    struct node
    {
    int x ,y,k,dis;
    node(
    int _k=0,int _x=0,int _y=0,int _dis=0):k(_k),x(_x),y(_y),dis(_dis){};
    };
    node s,e;
    void BFS()
    {
    ans
    =0;ok=0;
    memset(vis,
    0,sizeof(vis));
    queue
    <node> q;
    q.push(s);
    vis[s.k][s.x][s.y]
    =1;
    while(!q.empty())
    {
    node t
    =q.front();
    q.pop();
    if(t.x==e.x&&t.y==e.y&&t.k==e.k) {ans=t.dis;ok=1;return;}
    for(int m=0;m<6;m++)
    {
    int k=t.k+dir[m][0];
    int x=t.x+dir[m][1];
    int y=t.y+dir[m][2];
    if(k>=0&&k<n&&x>=0&&x<n&&y>=0&&y<n&&map[k][x][y]!='X'&&!vis[k][x][y])
    {
    vis[k][x][y]
    =1;
    if(map[k][x][y]=='O')q.push(node(k,x,y,t.dis+1));

    }
    }


    }
    }
    int main()
    {
    while(cin>>ss>>n)
    {


    for(int k=0;k<n;k++)
    for(int i=0;i<n;i++)
    cin
    >>map[k][i];
    cin
    >>s.y>>s.x>>s.k;
    cin
    >>e.y>>e.x>>e.k;
    cin
    >>ss;
    BFS();
    if(ok)cout<<n<<" "<<ans<<endl;
    else cout<<"NO ROUTE"<<endl;

    }
    }


  • 相关阅读:
    解决FileReader读取文件乱码问题
    comparable 与 comparator
    JavaScript添加水印
    mybatis里oracle与MySQL的insert_update
    关于回车换行
    solr创建collection
    hbase相关配置说明
    java基础(十一)--- IO
    java基础(十)--- 异常
    c++中的vector原理
  • 原文地址:https://www.cnblogs.com/sook/p/1995759.html
Copyright © 2011-2022 走看看