达拉崩吧救公主:三维城堡最短耗时计算
很久很久以前,巨龙突然出现,带来灾难带走了公主又消失不见。 公主米娅莫拉苏娜丹妮谢莉红被巨龙昆图库塔卡提考特苏瓦西拉松所困。 陛下希望你能把她救出并带回蒙达鲁克硫斯伯古比奇巴勒城。 你作为达拉崩巴斑得贝迪卜多比鲁翁接受了命令,骑上了最快的马,驰骋在路上。
已知巨龙的城堡是个三维形状,有 $k$ 层,每层为 $n\times m$($n$ 行 $m$ 列)。 城堡内的构造为:
S为城堡的入口,起始你站在这个位置。E为公主所在的位置,你需要到达此处,以救出公主。.为可以自由活动的区域,你可以在这里进行同层的上下左右移动,移动一个单元花费 $1$ 秒。#为巨龙设置的陷阱,你不能进入这个区域。@为楼层传送器,当你在第 $N$ 层时,你可以在这里进行传送至 $N+1$ 层或 $N-1$ 层的相同坐标位置,传送花费 $2$ 秒。A~Z为传送门,除了S和E最多有 $24$ 种类型的传送门,每种传送门可能有多个并遍布整个城堡,你可以在同类型传送门中自由穿梭,不花费任何时间。
为救出公主,你需要计算最快到达公主的位置所要花费的时间。
输入描述
第一行输入 $3$ 个正整数,$k$,$n$,$m$。 接着输入 $k$ 个楼层,大小为 $n$ 行 $m$ 列。 每两个楼层之间空一行。
输出描述
输出 $1$ 个整数,表示最快到达公主的位置所要花费的时间; 若无法到达,输出 $-1$。
输入样例1
3 5 5
S..A#
..@..
@..B.
...@.
#####
.....
..@..
.A...
...@.
.....
@..B.
.###.
.#E.A
.#A..
.....
输出样例1
4
输入样例2
2 5 5
S.@..
@....
.....
.....
.....
.....
#....
..E..
.....
.....
输出样例2
6
提示
对于 $20\%$ 的测试数据,$k=1$,$0 < n,m ≤ 100$,不存在楼层传送器和传送门。 对于 $40\%$ 的测试数据,$0 < k ≤ 10$,$0 < n,m ≤ 100$,不存在传送门。 对于 $100\%$ 的测试数据,$0 < k ≤ 10$,$0 < n,m ≤ 100$。
本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析