胜利大逃亡

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38775    Accepted Submission(s): 13641

Problem Description
Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.

魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出口就算离开城堡,如果走到出口的时候魔王刚好回来也算逃亡成功),如果可以请输出需要多少分钟才能离开,如果不能则输出-1.

Input
输入数据的第一行是一个正整数K,表明测试数据的数量.每组测试数据的第一行是四个正整数A,B,C和T(1<=A,B,C<=50,1<=T<=1000),它们分别代表城堡的大小和魔王回来的时间.然后是A块输入数据(先是第0块,然后是第1块,第2块......),每块输入数据有B行,每行有C个正整数,代表迷宫的布局,其中0代表路,1代表墙.(如果对输入描述不清楚,可以参考Sample Input中的迷宫描述,它表示的就是上图中的迷宫)

特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.

Output
对于每组测试数据,如果Ignatius能够在魔王回来前离开城堡,那么请输出他最少需要多少分钟,否则输出-1.
Sample Input
1 3 3 4 20 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0
Sample Output
11
Author
Ignatius.L
Recommend
Ignatius.L   |   We have carefully selected several similar problems for you:  1372 1242 1072 1240 1175 
非常裸的一道宽搜题目,这里贴代码供大家参考学习宽搜是怎么写的
提交的时候G++也能AC
代码如下:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
using namespace std;const int maxn=55;
int map[maxn][maxn][maxn],a,b,c,t;
int dx[]={1,-1,0,0,0,0};
int dy[]={0,0,1,-1,0,0};
int dz[]={0,0,0,0,1,-1};
bool used[maxn][maxn][maxn];
struct node{int x,y,z,step;
};bool islegal(int x, int y ,int z){if (x<1 || y<1 || z<1 || x>a || y>b || z>c || map[x][y][z]==1) return 0;return 1;
}int bfs(){queue<node>Q;node q,p;//第一个入队列的元素即为起点p.x=1;p.y=1;p.z=1;p.step=0;used[1][1][1]=1;Q.push(p);while(!Q.empty()){p=Q.front(); //取队列元素Q.pop();     //弹出队首元素if (p.x==a && p.y==b && p.z==c && p.step<=t) return p.step; //到达终点for (int i=0;i<6;i++){ //6个方向搜索q=p;q.x+=dx[i];q.y+=dy[i];q.z+=dz[i];if (!used[q.x][q.y][q.z] && (islegal(q.x,q.y,q.z))){used[q.x][q.y][q.z]=1;q.step=p.step+1;if (abs(q.x-a)+abs(q.y-b)+abs(q.z-c)+q.step>t) continue;//最短距离都无法满足要求就放弃这个方向Q.push(q);}}}return -1; //不存在方案便输出-1
}int main(){int k;scanf("%d",&k);while (k--){scanf("%d %d %d %d",&a,&b,&c,&t);for (int i=1;i<=a;i++)for (int j=1;j<=b;j++)for (int k=1;k<=c;k++)scanf("%d",&map[i][j][k]);memset(used,0,sizeof(used));printf("%d\n",bfs());}return 0;
}

宽搜入门代码模板详解 HDOJ1253相关推荐

  1. html embed css,HTML+CSS入门 embed详解

    本篇教程介绍了HTML+CSS入门 embed详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < (一).基本语法: embed src=url 说明:embed可以用来 ...

  2. 本征正交分解(POD)入门(详解)

    思来想去还是把题目从"简介"改成了"入门(详解)",其实详解主要就是针对可能没接触过矩阵论的同学,我也是研一才学的,入门是指的我会解释一些名词,方便理解.另外P ...

  3. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  4. 搜狗浏览器热搜怎么关 热搜关闭方法详解

    要说"搜狗浏览器"中最让人不满的地方,相信不少网友都会投该浏览器页面最下面的"搜狗搜索热搜"一票,毕竟其中经常出现一些用户曾经搜索过的或相关的词语!那么,搜狗浏 ...

  5. python入门教程pdf-Python入门教程详解.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython Python入门教程详解.pdf132页 本文档一 ...

  6. 小程序开发入门超详解之WXML

    小程序开发入门超详解之WXML 小程序入门开发超详解版之WXML 开发框架组成介绍 WXML语法 WXML特性 小程序入门开发超详解版之WXML 欢迎大家添加月神的微信:18333806737进行专业 ...

  7. Windows编程入门程序详解

    Windows编程入门程序详解 1.     程序 /************************************************************************* ...

  8. html入门基础(详解)

    html入门基础(详解) 一.HTML 1.HTML:是一种用于创建网页的超文本标记语言(Hyper Text Markup Language) "超文本"就是指页面可以包含图片, ...

  9. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  10. k8s入门教程详解(一)

    文章目录 Kubernetes 入门教程详解(一) 一. Kubernetes 概述 1. K8S 发展历史由来 2.K8S官网 2.K8S 是什么 3. K8s 优势及特点 3.1 K8S优势 3. ...

最新文章

  1. SSH远程管理(用户登录控制及密码验证)
  2. cocos2d笔记——解析HelloWorldScene
  3. VS调试python中的DLL
  4. MongoDB (二) MongoDB 优点
  5. 我的MVP,来的那么“糊涂”(2009.4)
  6. java包装器类_Java中的基本类型和包装类
  7. Jerry的ABAP, Java和JavaScript乱炖
  8. .NET Core 3.0之深入源码理解Configuration(一)
  9. ASP.NET Core Web 项目文件介绍
  10. switch case 支持的 6 种数据类型
  11. 程序员面试金典 - 面试题 17.13. 恢复空格(DP+Trie树)
  12. spring framework体系结构及内部各模块jar之间的maven依赖关系
  13. 研华运动控制卡接线图_研华运动控制卡 SoftMotion 技术简介
  14. Oracle数据库中文乱码问题
  15. python通过代理发送邮件_使用Python通过SMTP发送邮件
  16. 中国制造业加速拥抱云计算 产业规模达1500亿
  17. java 判断 string null_java 字符串为null 如何判断
  18. 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
  19. 杰里之drc 限幅器、多带限幅器、压缩器、多带压缩器调节【篇】
  20. Linuxftp服务

热门文章

  1. 怎样用计算机添加标题,Word中图片和表格如何自动添加标题
  2. python 之 del() 函数
  3. 转义字符 \r \v \f
  4. MARKETS AND MARKET LOGIC——The Market‘s Principles (1)
  5. fastDFS图片服务器的一些常见错误
  6. 根据英语单词学法语单词
  7. matlab导弹追踪,导弹追踪代码
  8. Verilog语言注意事项——always
  9. convert_variables_to_constants()
  10. 省计算机软件评审活动网站,2012年广东省计算机教育软件评审活动.doc