HDU 1240 Asteroids!

来源:互联网 发布:jas37战斗机 知乎 编辑:程序博客网 时间:2024/05/23 12:40

链接:点击打开链接

和 hdu 1253 胜利大逃亡基本一样,三维bfs,只是输入不同,这里给的起点,终点坐标是z y x,而不是x y z;这里注意一下就可以啦,我就是这里没注意,改错浪费很长时间。。

#include<iostream>#include<stdio.h>#include<queue>#include<string.h>using namespace std;char a[11][11][11];int b[11][11][11],A,B,C,A1,B1,C1,n;int c[6][3]={{0,0,1},{0,0,-1},{1,0,0},{0,1,0},{-1,0,0},{0,-1,0}};struct ss{int x,y,z,flag;};void bfs(){int i,j,k;queue<ss>Q;memset(b,0,sizeof(b));ss p,s;p.x=C1,p.y=B1,p.z=A1,p.flag=0;b[C1][B1][A1]=1;Q.push(p);while(!Q.empty()){p=Q.front();Q.pop();if(p.x==C&&p.y==B&&p.z==A){printf("%d %d\n",n,p.flag);return;}for(i=0;i<6;i++){s=p;s.x+=c[i][0],s.y+=c[i][1],s.z+=c[i][2],s.flag+=1;if(s.x>=0&&s.x<n&&s.y>=0&&s.y<n&&s.z>=0&&s.z<n&&a[s.x][s.y][s.z]=='O'&&!b[s.x][s.y][s.z]){b[s.x][s.y][s.z]=1;Q.push(s);}}} printf("NO ROUTE\n");}int main(){int i,j,k;char str[15];while(cin>>str>>n){for(i=0;i<n;i++) for(j=0;j<n;j++)  for(k=0;k<n;k++)    cin>>a[i][j][k];    //for(i=0;i<n;i++)    //for(j=0;j<n;j++)    //for(k=0;k<n;k++)//printf("%c",a[i][j][k]);     scanf("%d %d %d",&A1,&B1,&C1);    scanf("%d %d %d",&A,&B,&C);    cin>>str;    bfs();}return 0;}


原创粉丝点击