hdu 1253 胜利大逃亡
来源:互联网 发布:python工程师招聘 编辑:程序博客网 时间:2024/06/05 08:01
#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;int a,b,c;int vis[52][52][52],pos[52][52][52];//vis记录是否访问,pos存放立方体的坐标struct node//表示达到某个矩阵状态{ int x,y,z; int t;};int dir[6][3]= {{1,0,0},{-1,0,0},{0,0,1},{0,0,-1},{0,1,0},{0,-1,0}}; //可转移方向int go(int x,int y,int z)//前进的条件{ if(0<=x&&x<a&&0<=y&&y<b&&0<=z&&z<c&&pos[x][y][z]==0) return 1; return 0;}int bfs(int m){ node s,e; queue<node>Q;//建立队列 s.x=0; s.y=0; s.z=0; s.t=0; Q.push(s);//入队 while(!Q.empty())//判断队列是否为空 { s=Q.front();//队列的第一个 Q.pop();//出队 if(s.t>m)//判断该状态是否为目的状态 return -1; if(s.x==a-1&&s.y==b-1&&s.z==c-1&&s.t<=m) return s.t; int i; for(i=0; i<6; i++) //从该结点状态转移到其他状态 { e.x=s.x+dir[i][0]; e.y=s.y+dir[i][1]; e.z=s.z+dir[i][2]; if(go(e.x,e.y,e.z)&&!vis[e.x][e.y][e.z]) { vis[e.x][e.y][e.z]=1; e.t=s.t+1; if(abs(e.x-a+1)+abs(e.y-b+1)+abs(e.z-c+1)+e.t>m)//剪枝 continue; Q.push(e); } } } return -1;}int main(){ int K,time,i,j,k,ans; scanf("%d",&K); while(K--) { scanf("%d%d%d%d",&a,&b,&c,&time); for(i=0; i<a; i++) for(j=0; j<b; j++) for(k=0; k<c; k++) scanf("%d",&pos[i][j][k]); memset(vis,0,sizeof(vis)); vis[0][0][0]=1; ans=bfs(time); printf("%d\n",ans); } return 0;}
http://acm.hdu.edu.cn/showproblem.php?pid=1253
0 0
- hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡
- HDU 1253 胜利大逃亡
- HDU 1253 胜利大逃亡
- HDU-1253-胜利大逃亡
- hdu 1253 胜利大逃亡
- HDU-1253:胜利大逃亡
- hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡
- HDU 1253 胜利大逃亡
- hdu 1253 胜利大逃亡
- HDU-1253-胜利大逃亡
- hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡
- hdu-1253-胜利大逃亡
- HDU-1253-胜利大逃亡
- hdu 1253 胜利大逃亡
- POJ 3304 Segments
- 构造方法
- ADT:v22.6.2-1085508创建android工程自动创建appcompat_v7解决方案
- c++-类的初始化列表
- mybatis批量插入数据
- hdu 1253 胜利大逃亡
- 彩票机的原理解析
- V4L2 API详解 Camera详细设置
- android 将文件 保存到sd卡 上面
- 我的.NET技术书籍推荐
- CF——Next Round
- 崩溃了
- javascript常用正则验证, 中文, 字符, Email, 电话, 身份证 等等验证
- Adroid array存放R.drawable.**得到数组后为0