HDU 1253 胜利大逃亡(简单三维BFS)
来源:互联网 发布:常熟淘宝网店产品摄影 编辑:程序博客网 时间:2024/05/16 10:00
HDU 1253 胜利大逃亡(简单三维BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1253
题意:
有一个A*B*C的三维网格,问你从起点(0,0,0)走到终点(A-1,B-1,C-1)最少需要花多少时间.且网格中有障碍格.
分析:
三维网格的难点在于想象出一个符合二维BFS要求的图形.
如果只有2维,那么就是B*C的二维网格了,很好处理,现在有A这第三维,我们只需要按上图把A看成是二维网格的厚度即可.且本题的输入也是按厚度输入的.也即在原有维度r和c的基础上,多了一个h厚度新维度.
在原上下左右4方向的基础上,增加了前后两个行走方向.
注意此题要用C++提交,不能用G++提交.否则超时.
AC代码:
#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn=50+5;int dh[]={0,0,0,0,1,-1};//上下左右前后int dr[]={-1,1,0,0,0,0};int dc[]={0,0,-1,1,0,0};int A,B,C,T;int map[maxn][maxn][maxn],dist[maxn][maxn][maxn];//map[h][r][c],dist[h][r][c]struct Node{ int h,r,c; Node(int h,int r,int c):h(h),r(r),c(c){}};int BFS()//返回到终点的时间(不可达,返回-1),如果该时间>T也返回-1{ queue<Node> Q; memset(dist,-1,sizeof(dist)); Q.push(Node(0,0,0)); dist[0][0][0]=0; while(!Q.empty()) { Node node=Q.front(); Q.pop(); int h=node.h, r=node.r, c=node.c; for(int d=0;d<6;d++) { int nh=h+dh[d], nr=r+dr[d], nc=c+dc[d]; if(nh<0||nh>=A||nr<0||nr>=B||nc<0||nc>=C||map[nh][nr][nc]==1||dist[nh][nr][nc]!=-1) continue; dist[nh][nr][nc]=dist[h][r][c]+1; Q.push(Node(nh,nr,nc)); if(nh==A-1&&nr==B-1&&nc==C-1) { if(dist[nh][nr][nc]>T) return -1; return dist[nh][nr][nc]; } } } return -1;}int main(){ int kase;scanf("%d",&kase); while(kase--) { scanf("%d%d%d%d",&A,&B,&C,&T); 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]); printf("%d\n",BFS()); } return 0;}
1 0
- hdu 1253 胜利大逃亡 简单三维BFS
- hdu 1253 胜利大逃亡 (三维简单bfs+剪枝)
- HDU 1253 胜利大逃亡(简单三维BFS)
- HDU 1253:胜利大逃亡(简单三维BFS)
- hdu 1253 胜利大逃亡 (三维bfs)
- HDU 1253 胜利大逃亡 三维BFS
- hdu 1253 胜利大逃亡 简单bfs
- [ACM] hdu 1253 胜利大逃亡 (三维BFS)
- HDU 1253---胜利大逃亡【BFS三维数组】
- HDU 1253-胜利大逃亡(裸三维BFS)
- HDU 1253 胜利大逃亡(三维BFS)
- hdu 1253 胜利大逃亡(三维bfs)
- [ACM] hdu 1253 胜利大逃亡 (三维BFS)
- hdu 1253 胜利大逃亡 三维bfs 解题报告
- hdu 1253 胜利大逃亡(BFS,三维)
- HDU 1253 胜利大逃亡(三维数组+bfs)
- hdu 1253 胜利大逃亡(三维bfs+剪枝)
- HDU-1253 胜利大逃亡(简单三维广搜BFS)
- Eclipse启动时报错 An error has occurred. See error log for more details. loader constraint violation: loa
- 单预处理器与多服务器处理性能分析(JAVA)
- linux tr
- HNOI 2014 Day2 江南乐
- CSS 控制文章内容页的图片大小
- HDU 1253 胜利大逃亡(简单三维BFS)
- 数据库碎片学习:【转】淘宝海量数据库之三:事务的ACID
- UIWebView长按弹出菜单显示英文解决办法
- 用Cocos2d-x 和 libvlc 写的一个跨平台播放器
- Win7下sql server 2008 安装图解教程
- [C++ Primer 第4版]第3章 标准库类型
- POJ 2000 Gold Coins
- 消除SDK更新时的“https://dl-ssl.google.com refused”异常
- selenium 使用WebDriverWait等待条件正确