hdu1253
来源:互联网 发布:飞升仙女升级数据 编辑:程序博客网 时间:2024/05/17 08:17
简单三维BFS
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;int map[55][55][55];int vis[55][55][55];int d[55][55][55];int xx[6]={0,0,0,0,-1,1};int yy[6]={0,0,1,-1,0,0};int zz[6]={1,-1,0,0,0,0};void bfs(){ queue<int> q; vis[1][1][1]=1; d[1][1][1]=0; int s=1*10000+100+1; q.push(s); while(!q.empty()) { s=q.front(); q.pop(); int i; int x,y,z; int tz=s%100; s=s/100; int ty=s%100; s=s/100; int tx=s; for(i=0;i<6;i++) { x=tx+xx[i]; y=ty+yy[i]; z=tz+zz[i]; if(vis[x][y][z]==1||map[x][y][z]==1||map[x][y][z]==-1) continue; vis[x][y][z]=1; d[x][y][z]=d[tx][ty][tz]+1; q.push(x*10000+y*100+z); } }}int main(){ int k; scanf("%d",&k); int cas=1; for(cas=1;cas<=k;cas++) { int a,b,c,t; scanf("%d%d%d%d",&a,&b,&c,&t); int i,j,l; memset(map,-1,sizeof(map)); memset(vis,0,sizeof(vis)); memset(d,-1,sizeof(d)); for(i=1;i<=a;i++) for(j=1;j<=b;j++) for(l=1;l<=c;l++) scanf("%d",&map[i][j][l]); bfs(); if(d[a][b][c]<=t&&d[a][b][c]!=-1) printf("%d\n",d[a][b][c]); else printf("-1\n"); } return 0;}
- hdu1253
- hdu1253
- hdu1253
- hdu1253
- hdu1253
- HDU1253
- HDU1253 BFS
- hdu1253(bfs)
- hdu1253胜利大逃亡
- hdu1253胜利大逃亡
- hdu1253 胜利大逃亡
- hdu1253胜利大逃亡
- HDU1253(BFS+三维)
- HDU1253胜利大逃亡
- hdu1253(胜利大逃亡)
- hdu1253 胜利大逃亡
- HDU1253-胜利大逃亡
- HDU1253-胜利大逃亡
- 存储过程分页
- 我很喜欢这段话,留这里吧。。。备查
- 怎样把电子表格.xls导入mysql数据库
- 关于web开发的一些知识
- 关于Zbar和ZXing这两个无比强大的二维码和条形码识别工具
- hdu1253
- 一位软件工程师的6年总结
- Eclipse 安装Maven插件
- 字符的分割函数
- Ubuntu输入法安装及图标键盘显示
- 李开复对话硅谷教父:创业使人性弱点无限放大
- 有节操的站长才能做出好网站
- Oracle学习笔记2-数据库备份及SQL操作符
- ASP.NET页面事件执行顺序