宽搜入门代码模板详解 HDOJ1253
胜利大逃亡
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38775 Accepted Submission(s): 13641
魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,Ignatius每分钟能从一个坐标走到相邻的六个坐标中的其中一个.现在给你城堡的地图,请你计算出Ignatius能否在魔王回来前离开城堡(只要走到出口就算离开城堡,如果走到出口的时候魔王刚好回来也算逃亡成功),如果可以请输出需要多少分钟才能离开,如果不能则输出-1.
特别注意:本题的测试数据非常大,请使用scanf输入,我不能保证使用cin能不超时.在本OJ上请使用Visual C++提交.
#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相关推荐
- html embed css,HTML+CSS入门 embed详解
本篇教程介绍了HTML+CSS入门 embed详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < (一).基本语法: embed src=url 说明:embed可以用来 ...
- 本征正交分解(POD)入门(详解)
思来想去还是把题目从"简介"改成了"入门(详解)",其实详解主要就是针对可能没接触过矩阵论的同学,我也是研一才学的,入门是指的我会解释一些名词,方便理解.另外P ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- 搜狗浏览器热搜怎么关 热搜关闭方法详解
要说"搜狗浏览器"中最让人不满的地方,相信不少网友都会投该浏览器页面最下面的"搜狗搜索热搜"一票,毕竟其中经常出现一些用户曾经搜索过的或相关的词语!那么,搜狗浏 ...
- python入门教程pdf-Python入门教程详解.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Python Python入门教程详解.pdf132页 本文档一 ...
- 小程序开发入门超详解之WXML
小程序开发入门超详解之WXML 小程序入门开发超详解版之WXML 开发框架组成介绍 WXML语法 WXML特性 小程序入门开发超详解版之WXML 欢迎大家添加月神的微信:18333806737进行专业 ...
- Windows编程入门程序详解
Windows编程入门程序详解 1. 程序 /************************************************************************* ...
- html入门基础(详解)
html入门基础(详解) 一.HTML 1.HTML:是一种用于创建网页的超文本标记语言(Hyper Text Markup Language) "超文本"就是指页面可以包含图片, ...
- vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...
Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...
- k8s入门教程详解(一)
文章目录 Kubernetes 入门教程详解(一) 一. Kubernetes 概述 1. K8S 发展历史由来 2.K8S官网 2.K8S 是什么 3. K8s 优势及特点 3.1 K8S优势 3. ...
最新文章
- SSH远程管理(用户登录控制及密码验证)
- cocos2d笔记——解析HelloWorldScene
- VS调试python中的DLL
- MongoDB (二) MongoDB 优点
- 我的MVP,来的那么“糊涂”(2009.4)
- java包装器类_Java中的基本类型和包装类
- Jerry的ABAP, Java和JavaScript乱炖
- .NET Core 3.0之深入源码理解Configuration(一)
- ASP.NET Core Web 项目文件介绍
- switch case 支持的 6 种数据类型
- 程序员面试金典 - 面试题 17.13. 恢复空格(DP+Trie树)
- spring framework体系结构及内部各模块jar之间的maven依赖关系
- 研华运动控制卡接线图_研华运动控制卡 SoftMotion 技术简介
- Oracle数据库中文乱码问题
- python通过代理发送邮件_使用Python通过SMTP发送邮件
- 中国制造业加速拥抱云计算 产业规模达1500亿
- java 判断 string null_java 字符串为null 如何判断
- 雨后小故事动态邪恶_当您遇到“邪恶”的问题时,使故事变小
- 杰里之drc 限幅器、多带限幅器、压缩器、多带压缩器调节【篇】
- Linuxftp服务
热门文章
- 怎样用计算机添加标题,Word中图片和表格如何自动添加标题
- python 之 del() 函数
- 转义字符 \r \v \f
- MARKETS AND MARKET LOGIC——The Market‘s Principles (1)
- fastDFS图片服务器的一些常见错误
- 根据英语单词学法语单词
- matlab导弹追踪,导弹追踪代码
- Verilog语言注意事项——always
- convert_variables_to_constants()
- 省计算机软件评审活动网站,2012年广东省计算机教育软件评审活动.doc