读书人

HDU 1240 Asteroids

发布时间: 2013-03-06 16:20:31 作者: rapoo

HDU 1240 Asteroids!

Asteroids!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2275 Accepted Submission(s): 1548


Problem DescriptionInputOutputSample InputSample OutputSourceRecommend#include<iostream>#include<cstring>#include<queue>using namespace std;char maze[15][15][15];bool visit[15][15][15];long long depth[10000],Count,s;int mov[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};//前,后,左,右,上,下int BFS(int xa,int ya,int za,int xb,int yb,int zb){int a,b,c,i=1,j,p,q,r;bool flag=false;queue<int> x;queue<int> y;queue<int> z;x.push(xa);y.push(ya);z.push(za);while(!x.empty()&&!y.empty()&&!z.empty()){if(Count==depth[i-1]){i++;Count=s=0;}a=x.front();b=y.front();c=z.front();x.pop();y.pop();z.pop();if(a==xb&&b==yb&&c==zb){flag=true;break;}for(j=0;j<6;j++){p=a+mov[j][0];q=b+mov[j][1];r=c+mov[j][2];if(maze[p][q][r]=='O'&&!visit[p][q][r]){visit[p][q][r]=true;x.push(p);y.push(q);z.push(r);s++;}}depth[i]=s;Count++;}if(flag) return i-1;elsereturn -1;}int main(){int i,j,k,n,sx,sy,sz,ex,ey,ez,ans;char cmd[10];while(cin>>cmd){cin>>n;memset(maze,'*',sizeof(maze));memset(visit,false,sizeof(visit));for(i=0;i<n;i++)for(j=0;j<n;j++)for(k=0;k<n;k++)cin>>maze[k][j][i];cin>>sx>>sy>>sz>>ex>>ey>>ez;cin>>cmd;visit[sx][sy][sz]=true;depth[0]=1;Count=s=0;ans=BFS(sx,sy,sz,ex,ey,ez);if(ans==-1)cout<<"NO ROUTE"<<endl;elsecout<<n<<" "<<ans<<endl;}return 0;}

读书人网 >编程

热点推荐