hdu 1253 胜利大逃亡 简单bfs
来源:互联网 发布:单片机c语言手册 编辑:程序博客网 时间:2024/06/01 09:16
题意:在3维空间的最短路。
思路:直接bfs,每个状态最多有6个方向可以转移,用G++交题超时,c++交没问题
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 55;int map[maxn][maxn][maxn];int d[maxn][maxn][maxn];int Move[]={0,0,1,0,0,-1,0,0};//x,y,z+1 x,y+1,z x+1,y,z x,y,z-1 x,y-1,z x-1,y,zint A,B,C,T;struct node{int i,j,k;node(int i,int j,int k):i(i),j(j),k(k){}};bool check(int i,int j,int k){bool a=(i>=0&&i<A&&j>=0&&j<B&&k>=0&&k<C);return a;}void bfs(){queue<node> q;q.push(node(0,0,0));d[0][0][0]=0;while(!q.empty()){int sz = q.size();while(sz--){node a=q.front();q.pop();int di,dj,dk,ci,cj,ck;di=a.i;dj=a.j;dk=a.k;if(di==A-1&&dj==B-1&&dk==C-1)return;for(int i=0;i<6;i++){ci=di+Move[i];cj=dj+Move[i+1];ck=dk+Move[i+2];if(check(ci,cj,ck)&&d[ci][cj][ck]==-1&&map[ci][cj][ck]==0){d[ci][cj][ck]=d[di][dj][dk]+1;q.push(node(ci,cj,ck));}}}}}int main(){int t;scanf("%d",&t);while(t--){scanf("%d%d%d%d",&A,&B,&C,&T);memset(d,-1,sizeof(d));for(int i=0;i<A;i++)for(int j=0;j<B;j++)for(int k=0;k<C;k++)scanf("%d",&map[i][j][k]);bfs();if(d[A-1][B-1][C-1]>T||d[A-1][B-1][C-1]==-1)printf("-1\n");elseprintf("%d\n",d[A-1][B-1][C-1]);}}
0 0
- hdu 1253 胜利大逃亡 简单bfs
- hdu 1253 胜利大逃亡 简单三维BFS
- hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
- HDU 1253 胜利大逃亡(简单三维BFS)
- HDU 1253:胜利大逃亡(简单三维BFS)
- hdu 1253胜利大逃亡 bfs
- hdu 1253 胜利大逃亡 BFS
- [BFS] hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡 (三维bfs)
- hdu 1253 胜利大逃亡 (bfs)
- hdu 1253 胜利大逃亡(BFS)
- HDU 1253 胜利大逃亡(BFS)
- HDU-1253 胜利大逃亡 (BFS)
- hdu 1253 胜利大逃亡 bfs
- hdu 1253bfs胜利大逃亡
- HDU 1253 胜利大逃亡 (BFS,剪枝)
- hdu 1253 胜利大逃亡(bfs)
- HDU 1253 胜利大逃亡(BFS)
- Ubuntu 下搜狗输入法无法输入中文解决方法(赠福利)
- java(八)集合(2)
- 机器学习简易入门(一)
- 《JavaScript设计模式与开发实践》
- python 股票交易数据按名称 开户时间 结束时间入库
- hdu 1253 胜利大逃亡 简单bfs
- Leetcode-111. Minimum Depth of Binary Tree
- 三子棋小游戏
- qt启动画面实现
- 合并下载的股票数据
- libbson's append functions
- 解决java读取excel文件有小数点的问题
- ubuntu16.04搜狗输入法无法输入中文的解决方法
- python 按表里的股票编码下载