首页 > 代码库 > hdu 1253 胜利大逃亡(简单题)
hdu 1253 胜利大逃亡(简单题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253
题目大意:在所给的时间能顺利离开城堡。
1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5 using namespace std; 6 int map[55][55][55],visit[55][55][55],a,b,c,T; 7 int dir[6][3]= {0,0,1,0,0,-1,0,1,0,0,-1,0,1,0,0,-1,0,0}; 8 struct next 9 {10 int x;11 int y;12 int z;13 int t;14 } s,ss;15 queue<next>q,qq;16 int bfs()17 {18 s.x=0;19 s.y=0;20 s.z=0;21 s.t=0;22 map[0][0][0]=1;23 q.push(s);24 while (!q.empty())25 {26 s=q.front();27 q.pop();28 for (int i=0; i<6; i++)29 {30 int t=s.t+1;31 int x=s.x+dir[i][0],y=s.y+dir[i][1],z=s.z+dir[i][2];32 if (x>=0&&x<a&&y>=0&&y<b&&z>=0&&z<c&&t<=T&&map[x][y][z]==0&&!visit[x][y][z])33 {34 if(x==a-1&&y==b-1&&z==c-1)35 {36 return t;37 }38 ss.x=x;39 ss.y=y;40 ss.z=z;41 ss.t=t;42 visit[x][y][z]=1;43 q.push(ss);44 45 }46 }47 }48 return -1;49 }50 int main ()51 {52 int o,i,j,k;53 scanf ("%d",&o);54 while (o--)55 {56 memset(visit,0,sizeof(visit));57 q=qq;58 scanf ("%d%d%d%d",&a,&b,&c,&T);59 for (i=0; i<a; i++)60 for (j=0; j<b; j++)61 for (k=0; k<c; k++)62 scanf ("%d",&map[i][j][k]);63 int t=bfs();64 if (t>=0)65 printf ("%d\n",t);66 else67 printf ("-1\n");68 }69 return 0;70 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。