给定一个 N \times M 的迷宫。
迷宫内的字符含义如下:
#
表示障碍,不能走;
.
表示道路,可以走;
@
表示迷宫的起点;
=
表示迷宫的终点;
大写的英文字母,代表传送门,相同的英文字母出现次数不超过 2 次。如果出现 2 次,则这一对字母形成传送门,如果出现 1 次,则该字母作用和道路相同。例如,样例 1 中出现了 2 个 W
,则其中的一个 W
是传送门的起点,另一个 W
则是传送门的终点。
从起点出发,不能走出迷宫,可以沿着上下左右四方向移动。如果在非障碍的位置之间移动 1 格,消耗 1 个单位的时间。从一个传送门,传送到另一个传送门不消耗时间,当你位于传送门时,如果该传送门可以正常工作(成对出现),那么一定会将你传送到另一个匹配的位置上。
请编程计算出,从起点到终点最短需要消耗的总时间。
第 1 行有 2 个整数 N,M。(1 \le N,M \le 300)
接下来 N 行,每行有 M 个字符,表示迷宫每块格子的元素值。
输出从起点到终点的最少时间,测试数据确保从起点一定能走到终点。
5 6 ###=## #.W.## #.#### #.@W## ######
3
3 5 A#@A= .#.#. .....
4
6 5 #=### #A..# ##B## #...# #@### ##A.#
8
东方博宜OJ