HDU1253 BFS
来源:互联网 发布:2016com域名注册 促销 编辑:程序博客网 时间:2024/05/21 17:02
这一题的陷阱好多啊;
1:出口可能是墙;
2:如果离开的时候魔王恰好回来,输出离开时间而不是 -1;
3:这个条件有些诡异,就是如果迷宫只有一个位置依然输出-1..搞不懂
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct node{int x,y,z,t;}node;typedef struct queue{int front,rear;node digit[300000];}queue;int dir[6][3]={0,0,1,0,0,-1,1,0,0,-1,0,0,0,1,0,0,-1,0};int maps[51][51][51];int vis[51][51][51];int n,A,B,C,time;queue s;void init(){s.front = s.rear = 0;}void enqueue(int tx,int ty,int tz,int tt){s.digit[s.rear].x = tx;s.digit[s.rear].y = ty;s.digit[s.rear].z = tz;s.digit[s.rear].t = tt;s.rear++;}void dequeue(){s.front++;}int isempty(){return s.front==s.rear?1:0;}void bfs(int x,int y,int z){node tmp,tx;int i;init();enqueue(0,0,0,0);vis[0][0][0] = 1;s.digit[0].t=0;if(maps[0][0][0]==0&&(A+1)*(B+1)*(C+1)==1){printf("-1\n");return ;}while(!isempty()){tmp.x=s.digit[s.front].x;tmp.y=s.digit[s.front].y;tmp.z=s.digit[s.front].z;tmp.t=s.digit[s.front].t;dequeue();if(tmp.x==A&&tmp.y==B&&tmp.z==C){if(tmp.t>time)printf("-1\n");elseprintf("%d\n",tmp.t);return ;}for(i=0;i<6;i++){tx.x = tmp.x+dir[i][0];tx.y=tmp.y+dir[i][1];tx.z=tmp.z+dir[i][2];if(tx.x>=0&&tx.x<=A&&tx.y>=0&&tx.y<=B&&tx.z>=0&&tx.z<=C)if(!maps[tx.x][tx.y][tx.z]&&!vis[tx.x][tx.y][tx.z]){tx.t = tmp.t + 1;vis[tx.x][tx.y][tx.z]=1;enqueue(tx.x,tx.y,tx.z,tx.t);}}}printf("-1\n");}int main(){int i,j,k;int x,y,z;while(scanf("%d",&n)!=EOF){while(n--){scanf("%d%d%d%d",&x,&y,&z,&time);A=x-1;B=y-1;C=z-1;for(i=0;i<x;i++)for(j=0;j<y;j++)for(k=0;k<z;k++)scanf("%d",&maps[i][j][k]);if(maps[A][B][C]){printf("-1\n");continue;}memset(vis,0,sizeof(vis));bfs(0,0,0);}}return 0;}
- HDU1253 BFS
- hdu1253(bfs)
- HDU1253(BFS+三维)
- HDU1253 基础BFS
- HDU1253(三维简单bfs)
- HDU1253:胜利大逃亡(BFS)
- hdu1253胜利大逃亡 (BFS)
- HDU1253:胜利大逃亡(BFS)
- HDU1253 胜利大逃亡 BFS
- HDU1253 胜利大逃亡【BFS】
- HDU1253 胜利大逃亡 BFS
- hdu1253胜利大逃亡bfs
- 【BFS】HDU1253胜利大逃亡
- HDU1253:胜利大逃亡(BFS)
- HDU1253 胜利大逃亡(BFS)
- hdu1253胜利大逃亡(bfs)
- HDU1253 胜利大逃亡(BFS)
- 【BFS模板】HDU1253 胜利大逃亡
- 用两个栈实现队列
- 移动开发四国语言概览三:数据类型与常量、变量(上)
- PL/SQL学习二
- C语言 运算符优先级
- openfiler和netapp使用指南参考网址
- HDU1253 BFS
- [math] hdu 3816 to be no. one
- 学习Web 开发技术的16个国外最佳教程网站和博客
- emacs+python[Chinese]
- Struts2中result全貌
- JAVA开发工具简介
- 乔布斯改变世界的10种方式
- C++笔试题(不断更新)
- mysql与oracle日期格式化字符对照表