hdu 1240 Asteroids!

来源:互联网 发布:boyd holbrook 知乎 编辑:程序博客网 时间:2024/06/04 06:23

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240


BFS水题,注意x,y,z的顺序。

#include<iostream>#include<queue>#include<cstring>#include<algorithm>using namespace std;struct node{    int x,y,z,time;};char s[10];char map[15][15][15];int vis[15][15][15];int n,a,b,c,d,e,f,flag;int dx[]={1,-1,0,0,0,0};int dy[]={0,0,1,-1,0,0};int dz[]={0,0,0,0,1,-1};void bfs(){    int ans;    node vw,vn;    queue<node>fuck;    vn.x=a;    vn.y=b;    vn.z=c;    vn.time=0;    fuck.push(vn);    while(!fuck.empty())    {        vn=fuck.front();        ans=vn.time;        fuck.pop();        if(vn.x==d&&vn.y==e&&vn.z==f)        {            flag=1;            break;        }        else        {            int p;            for(p=0;p<6;p++)            {                vw.x=vn.x+dx[p];                vw.y=vn.y+dy[p];                vw.z=vn.z+dz[p];                if(vw.x>=0&&vw.y>=0&&vw.z>=0&&vw.x<n&&vw.y<n&&vw.z<n&&map[vw.x][vw.y][vw.z]=='O'&&!vis[vw.x][vw.y][vw.z])                {                    vis[vw.x][vw.y][vw.z]=1;                    vw.time=vn.time+1;                    fuck.push(vw);                }            }        }    }    if(flag)    cout<<n<<" "<<ans<<endl;    else    cout<<"NO ROUTE"<<endl;}int main(){    while(cin>>s)    {        int i,j,k;        cin>>n;        for(i=0;i<n;i++)         for(j=0;j<n;j++)          for(k=0;k<n;k++)            cin>>map[k][j][i];        cin>>a>>b>>c>>d>>e>>f;        memset(vis,0,sizeof(vis));        cin>>s;        flag=0;        bfs();    }    return 0;}


原创粉丝点击