魔戒(思维+bfs)
Description
蓝色空间号和万有引力号进入了四维水洼,发现了四维物体--魔戒。
这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E"。空间中可能存在障碍物,标为 "#",其他为可以通过的位置。
现在他们想要尽快到达魔戒进行探索,你能帮他们算出最小时间是最少吗?我们认为飞船每秒只能沿某个坐标轴方向移动一个单位,且不能越出四维空间。
Input
输入数据有多组(数据组数不超过 30),到 EOF 结束。
每组输入 4 个数 x, y, z, w 代表四维空间的尺寸(1 <= x, y, z, w <= 30)。
接下来的空间地图输入按照 x, y, z, w 轴的顺序依次给出,你只要按照下面的坐标关系循环读入即可。
for 0, x-1
for 0, y-1
for 0, z-1
for 0, w-1
保证 "S" 和 "E" 唯一。
Output
对于每组数据,输出一行,到达魔戒所需的最短时间。
如果无法到达,输出 "WTF"(不包括引号)。
Sample Input
2 2 2 2
..
.S
..
#.
#.
.E
.#
..
2 2 2 2
..
.S
#.
##
E.
.#
#.
..
Sample Output
1
3
题解:其实四维空间博主也不太懂,这道题其实题意很简单求s->E的最短路,直接4维数组+bfs搜一下就好
#include<cstdio>
#include<cstring>
#include<stack>
#include<queue>
#include<algorithm>
#include<map>
#include<vector>
#define PI acos(-1.0)
using namespace std;
#define Inf 0x3f3f3f3f
typedef long long ll;
int m,n,x,y,flag=;
char str[][][][];
int visit[][][][];
int dis[][];
int di[][]= {{,,,},{,,,-},{,,,},{,,-,},{,,,},{,-,,},{,,,},{-,,,}};
map<ll,ll>::iterator it;
struct node
{
int x,y,z,w,step;
} ;
int bfs(int sx,int sy,int sz,int sw)
{
queue<node>pp;
node s,q;
s.x=sx;
s.y=sy;
s.z=sz;
s.w=sw;
s.step=;
pp.push(s);
memset(visit,,sizeof(visit));
visit[s.x][s.y][s.z][s.w]=;
while(!pp.empty())
{
s=pp.front();
if(str[s.x][s.y][s.z][s.w]=='E')
{
flag=;
return s.step;
}
pp.pop();
for(int i=; i<; i++)
{
q.x=s.x+di[i][];
q.y=s.y+di[i][];
q.z=s.z+di[i][];
q.w=s.w+di[i][];
q.step=s.step;
if(q.x>=&&q.x<m&&q.y>=&&q.y<n&&q.z>=&&q.z<x&&q.w>=&&q.w<y&&!visit[q.x][q.y][q.z][q.w]&&str[q.x][q.y][q.z][q.w]!='#')
{
q.step++;
visit[q.x][q.y][q.z][q.w]=;
pp.push(q);
}
}
}
}
int main()
{
int z,w,sx,sy,sz,sw,i,j,ans;
while(scanf("%d%d%d%d",&m,&n,&x,&y)!=-)
{
flag=;
for(i=; i<m; i++)
for(j=; j<n; j++)
for(z=; z<x; z++)
for(w=; w<y; w++)
{
scanf(" %c",&str[i][j][z][w]);
if(str[i][j][z][w]=='S')
{
sx=i,sy=j,sz=z,sw=w;
} }
ans=bfs(sx,sy,sz,sw);
if(flag)
puts("WTF");
else
printf("%d\n",ans);
}
return ;
}
题意很简单从s->E的最短路,4维数组+bfs搜索一下就哦了,bfs裸题
魔戒(思维+bfs)的更多相关文章
- Vladik and Favorite Game CodeForces - 811D (思维+BFS+模拟+交互题)
D. Vladik and Favorite Game time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Valid BFS? CodeForces - 1037D(思维 bfs)
我真是一只菜狗......emm... 题意: 判断一个从1开始的队列是否可以按照bfs的顺序 进行遍历..必须从1开始...然后后边依次是bfs顺序 解析: 看代码能看懂吧...emm...就是把每 ...
- Codeforces Round #297 (Div. 2) D. Arthur and Walls [ 思维 + bfs ]
传送门 D. Arthur and Walls time limit per test 2 seconds memory limit per test 512 megabytes input stan ...
- Atcoder C - Closed Rooms(思维+bfs)
题目链接:http://agc014.contest.atcoder.jp/tasks/agc014_c 题意:略. 题解:第一遍bfs找到所有可以走的点并标记步数,看一下最少几步到达所有没锁的点,然 ...
- CF543B Destroying Roads 枚举 + 思维 + BFS
Code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in", ...
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...
- Codeforces542E Playing on Graph 思维+DFS+BFS
解法参考https://www.cnblogs.com/BearChild/p/7683114.html这位大佬的,这位大佬讲得很好了. 这道题还是有一定的思维的. 直接贴代码: #include&l ...
- Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS
题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...
- Gym - 100971J (思维+简单bfs)
题目链接:http://codeforces.com/gym/100971/problem/J J. Robots at Warehouse time limit per test 2.0 s mem ...
随机推荐
- 2017年国内已经开设机器人工程专业(080803T)高校名单
相关资料来源于教育部公布的2014年度和2016年度普通高等院校本科专业备案或审批结果的通知: 2014年批次 http://www.moe.edu.cn/publicfiles/business/h ...
- 抓https包
一.charles抓https 1.打开charles,打开Help--SSL Proxy--Install Charles Root Certificate,charles安装证书,傻瓜式安装即可 ...
- phpcms URL修改
修改caches\configs\system.php中'html_root' => 'html',//生成静态文件路径改成'html_root' => '',//生成静态文件路径,然后修 ...
- MYSQL 级联 添加外键
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...
- 剑指offer-第七章面试案例2(树中两个节点的公共祖先节点)
import java.util.LinkedList; import java.util.Queue; import java.util.Stack; //树中两个节点的最低公共祖先 //第一种情况 ...
- 双色球基础分析--SQL
代码是心血来潮编写得,就象买彩票一样,为国家做贡献:首先建立一个表,表得数据可以从福利彩票网站上获得,自己一个一个得录入进去先: 表结构为: ) NOT NULL , --期数 [F1] [i ...
- 7天学会HTML--HTML综述
一周学会HTML 1.HTML是什么? HTML 指的是超文本标记语言 (Hyper Text Markup Language) 2.HTML发展历程 HTML版本从1.0到4.0不断升级,其版本的规 ...
- 前端mvc mvp mvvm 架构介绍(vue重构项目一)
首先 我们为什么重构这个项目 1:我们现有的技术是前后台不分离,页面上采用esayUI+jq构成的单页面,每个所谓的单页面都是从后台胜场的唯一Id 与前端绑定,即使你找到了那个页面元素,也找不到所在的 ...
- Tensorflow的采样方法:candidate sampling(zhuan)
zhuanzi:https://blog.csdn.net/u010223750/article/details/69948463 采样介绍 假如我们有一个多分类任务或者多标签分类任务,给定训练集(x ...
- bzoj 4650 & 洛谷 P1117 优秀的拆分 —— 枚举关键点+后缀数组
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4650 https://www.luogu.org/problemnew/show/P1117 ...