#878. 解救公主(save.cpp)
解救公主(save.cpp)
解救公主(save.cpp)
【题目描述**】**
公主被邪恶的大魔王困在了迷宫里,你决定去解救她。迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡,迷宫里还有一些古老的传送阵,一旦走到传送阵上,会强制被传送到传送阵的另一头。
现在请你算一算,你至少需要走多少步才能解救到公主?
注意:只能上下左右四个方向走,且同一个传送门可以多次使用。
【输入】
第一行为一个整数T,表示测试数据组数。每组测试数据第一行为两个整数N,M,(1 <= N, M <= 50)表示迷宫的长和宽。接下来有N行,每行M个字符,是迷宫的具体描述。
'.'表示安全的位置,'#'表示陷阱,
'P'表示公主的位置,'S'表示你所在位置,
小写字母a-'z'表示分别表示不同的传送阵,数据保证传送阵两两配对。
【输出】
每组数据输出一行,解救公主所需的最少步数,如果无论如何都无法救公主,输出-1。
2
5 5
....S
.###.
b#b#a
##.##
...Pa
5 5
....S
.###.
.#.#.
##.##
...P.
3
-1
【数据说明】
对于100%的数据:0 <N、M<= 50
Statistics
Related
In following homework: