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 不需要知道四维空间的存在形式,经过队友的启发后,明白你只需要从低维度的空间推上来就好了。
一维空间开一维数组;二维空间开二维数组,三维空间开三维数组,所以四维空间开四维数组就好了。
每高一个维度,需要注意方向数组的不同。
 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<stack>
#include<deque>
#include<iostream>
using namespace std;
typedef long long LL;
struct spot{
int x;
int y;
int z;
int w;
LL step;
};
int a,b,c,d;
int con[][][][];
int vis[][][][];
int way[][]={,,,,,,,-,,,,,,,-,,,,,,,-,,,,,,,-,,,};
int judge(int aa,int bb,int cc,int dd)
{
if(aa>=&&aa<a&&bb>=&&bb<b&&cc>=&&cc<c&&dd>=&&dd<d&&vis[aa][bb][cc][dd]==&&con[aa][bb][cc][dd]!='#')
return ;
else
return ; }
void BFS(int aa,int bb,int cc,int dd)
{
int i,p,j;
queue<struct spot> qq;
struct spot head,mid;
int flag=;
head.x=aa;
head.y=bb;
head.z=cc;
head.w=dd;
head.step=;
vis[aa][bb][cc][dd]=;
qq.push(head);
while(!qq.empty())
{
mid=qq.front();
qq.pop();
if(con[mid.x][mid.y][mid.z][mid.w]=='E')
{
flag=;
break;
}
for(i=;i<;i++)
{
struct spot now;
now=mid;
now.x+=way[i][];
now.y+=way[i][];
now.z+=way[i][];
now.w+=way[i][];
if(judge(now.x,now.y,now.z,now.w))
{
now.step++;
vis[now.x][now.y][now.z][now.w]=;
qq.push(now);
}
}
}
if(flag==)
printf("%lld\n",mid.step);
else
printf("WTF\n");
return ;
}
int main()
{
int i,p,j,q;
int aa,bb,cc,dd;
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
for(i=;i<=a-;i++)
for(j=;j<=b-;j++)
for(p=;p<=c-;p++)
for(q=;q<=d-;q++)
{
scanf(" %c",&con[i][j][p][q]);
if(con[i][j][p][q]=='S')
{
aa=i;
bb=j;
cc=p;
dd=q;
}
}
memset(vis,,sizeof(vis));
BFS(aa,bb,cc,dd);
}
return ;
}

SDUT 3929的更多相关文章

  1. 【叉积】【sdut 2508 图形密码】

    图形密码 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  2. sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

    转置矩阵 Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sdutoj/proble ...

  3. sdut 2125串结构练习--字符串匹配【两种KMP算法】

    串结构练习——字符串匹配 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sduto ...

  4. sdut 2498【aoe 网上的关键路径】

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2498 代码超时怎么破: #include< ...

  5. sdut 487-3279【哈希查找,sscanf ,map】

    487-3279 Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接: sdut:   http://acm.sdut.ed ...

  6. sdut 1465 公共因子

    公共因子 Time Limit: 1000MS Memory limit: 65536K 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?act ...

  7. 排队打饭 sdut 2443【最简单的贪心法应用举例】

    排队打饭 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  8. sdut 2445 小学数学

    小学数学 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  9. 最终排名 sdut 2446

    最终排名 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

随机推荐

  1. 安装DHCP 服务器 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码

    DHCP服务详解 前言:动态主机配置协议,给局域网内的主机分配IP地址,子网掩码,网关,DNS ARP协议 arp: address resolveing protocol (地址解析协议) 实现:I ...

  2. C语言语法树

  3. 【Linux】- cat命令的源码历史

    转自:Cat 命令的源码历史 以前我和我的一些亲戚争论过计算机科学的学位值不值得读.当时我正在上大学,并要决定是不是该主修计算机.我姨和我表姐觉得我不应该主修计算机.她们承认知道如何编程肯定是很有用且 ...

  4. sqlserver-触发器-判断更新了哪个字段。

    create trigger 触发器名称on 表名(将触发器创建到那张表中)for updateasif update(判断更新字段)beginupdate (要更新的表名) set 字段=inser ...

  5. HDU4678_Mine

    很有意思,很好的题目. 这样的,一个n*m的扫雷地图,告诉你哪些地方是有雷的.一个人如果点在了空白处,那么与其相邻的(八个方向)的数字以及空白都会递归地显示出来,如果点在数字上面,那么就只会显示这一个 ...

  6. bzoj2788-Festival

    题意 有 \(n\) 个变量,有两种限制,分别有 \(m_1,m_2\) 种.限制如下: \(a_x+1=a_y\) \(a_x\le a_y\) 求 \(\{x_i\}\) 集合的大小.\(n\le ...

  7. BZOJ 1853 幸运数字(容斥原理+dfs)

    题意:求闭区间内能被6和8组成的数字整除的数目.n<=1e11. 我们可以预处理出这些6和8组成的数字,大概2500个,然后排除一些如88,66的情况.这样大概还剩下1000个. 转化为[0,r ...

  8. 【Mybatis】<foreach>标签在mybatis中的使用

    mapper.xml如下: <select id="selectCkspcb" parameterType="java.util.Map" resultT ...

  9. (转)解决点击a标签返回页面顶部的问题

    本文转载至http://www.cnblogs.com/chenluomenggongzi/p/5950670.html 1 <!DOCTYPE html> 2 <html lang ...

  10. P2573 [SCOI2012]滑雪

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着 M 条供滑行的轨道和 N 个轨道之间的交点(同时也是景点),而且每个景点都有一编号 i ( 1≤i≤N )和一高度 Hi.a18028 ...