I - A计划 HDU - 2102
A计划
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 30433 Accepted Submission(s): 7627
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。
5 5 14
S*#*.
.#...
.....
****.
...#.
..*.P
#.*..
***..
...*.
*.#..
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<string>
#include<vector>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<cmath>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
#define MAX_N 1000005
#define gcd(a,b) __gcd(a,b)
#define mem(a,x) memset(a,x,sizeof(a))
#define mid(a,b) a+b/2
#define stol(a) atoi(a.c_str())//string to long
int N,M,T;
int pn,px,py;
string maze[][];
int dirx[] = {-,,,};
int diry[] = {,,-,};
ll len[][][];
int vis[][][];
int nx,ny,nn;
struct Node{
int n,x,y;
};
bool bfs(int n,int x,int y){
for(int i = ; i < ; ++i)
for(int j = ; j < N; ++j)
for(int k = ; k < M; ++k)
len[i][j][k] = inf;
mem(vis,);
queue<Node>que;
que.push((Node){.n=n,.x=x,.y=y});
vis[n][x][y] = ;
len[n][x][y] = ;
while(que.size()){
Node p = que.front();
que.pop();
// cout<<p.n<<" "<<p.x<<" "<<p.y<<endl;
if(maze[p.n][p.x][p.y]=='P'){
return true;
}
for(int i = ; i < ; ++i){
nx = p.x + dirx[i];
ny = p.y + diry[i];
if(nx< || nx >= N || ny < || ny >= M )
continue;
nn = (maze[p.n][nx][ny] == '#'?int(p.n^):p.n);
if(!vis[nn][nx][ny]&&maze[nn][nx][ny]!='*'){
que.push((Node){.n=nn,.x=nx,.y=ny});
vis[nn][nx][ny]=;
int temp = (maze[p.n][nx][ny]=='#'?:);
len[nn][nx][ny] = len[p.n][p.x][p.y]+; }
}
}
return false;
}
int main(){
//std::ios::sync_with_stdio(false);
//std::cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
#else
#endif
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&N,&M,&T);
for(int i = ; i < ; ++i){
for(int j = ; j < N; ++j){
cin>>maze[i][j];
for(int k = ; k < M; ++k){
if(maze[i][j][k]=='P'){
pn = i,px = j,py = k;
}
}
}
}
for(int j = ; j < N; ++j){
for(int k = ; k < M; ++k){
if((maze[][j][k]==maze[][j][k]&&(maze[][j][k]=='#'))||(maze[][j][k]=='*'&&maze[][j][k]=='#')||(maze[][j][k]=='#'&&maze[][j][k]=='*')){
maze[][j][k] = '*';
maze[][j][k] = '*';
}
}
}
bool ans = bfs(,,);
// cout<<len[pn][px][py]<<endl;
if(ans&&len[pn][px][py] <= T)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl; }
return ;
}
I - A计划 HDU - 2102的更多相关文章
- A计划 HDU - 2102
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 2102 A计划
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸 ...
- HDU 2102 A计划(两层地图加时间限制加传送门的bfs)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others) Me ...
- hdu - 2102 A计划 (简单bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...
- hdu 2102 A计划(优先队列+dfs)
改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- [HDU 2102] A计划(搜索题,典型dfs or bfs)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2102 A计划(BFS/DFS走迷宫)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2102 A计划(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输 ...
随机推荐
- 利用Python暴力爆破PDF密码
一个简单的Python脚本,可用于暴力破解受密码保护的PDF文件的密码脚本已在使用128位RC4(大多数信用卡对帐单)加密的PDF上进行了测试,成功率为100% pasword='<passwo ...
- redis安装zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
问题: zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录 解决方案:执行命令:make MALLOC=libc make MALLOC=libc
- vue基本配置和生命周期
Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...
- 61)PHP,立即跳转
一般使用 header(‘Location:’)来进行跳转. ******************************************************************* ...
- nodejs快速测试
对于一些js功能,可以通过nodejs快速搭建测试环境 1.这里我们先通过express脚手架快速搭建一个项目,或者init一个空项目 2.mkdir script 3.这里假设我们的场景是MQTT接 ...
- 自主知识产权受热捧 瑞星ESM SOHO版全力护卫小微企业
小微企业现在可以说是我国国民经济中最重要的组成部分,在总产值.利税.解决就业等方面,都在为国家积极贡献着自己的力量.但在小微企业一片欣欣向荣的背后,却有着难言之隐--那就是困扰着广大小微企业多年的企业 ...
- ES6下的Function.bind方法
在JavaScript的使用中,this的指向问题始终是一个难点.不同的调用方式,会使this指向不同的对象.而使用call,apply,bind等方式,可改变this的指向,完成一些令人惊叹的黑魔法 ...
- 由生到死10个月!做App中的“二”有多难
十月,原本是怀胎过程的喜悦时光,但这段个时光,如今却是绝大多数App从生到死的所有时间.在App市场表面形式一片大好,彻底主宰我们生活.工作.娱乐的当下,绝大多数用户只是在App海洋中只取一瓢饮,其他 ...
- 提高你css技能的css开发技巧
好久没整理博客了 进来啰嗦两句 继续抄别人的博客 一.resize实现图片对比 resize的语法如下: resize:none | both | horizontal | vertical 案例 ...
- derby常用语法
derby常用语法 以user表为例: 1.创建表 create table user (id int primary key,account varchar(5),name varchar(5),p ...