2890 - 迷宫

题目描述

给定一个 N \times M 的迷宫。

迷宫内的字符含义如下:

  1. # 表示障碍,不能走;

  2. . 表示道路,可以走;

  3. @ 表示迷宫的起点;

  4. = 表示迷宫的终点;

  5. 大写的英文字母,代表传送门,相同的英文字母出现次数不超过 2 次。如果出现 2 次,则这一对字母形成传送门,如果出现 1 次,则该字母作用和道路相同。例如,样例 1 中出现了 2W ,则其中的一个 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

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 34
通过人数 21
金币数量 2 枚
难度 基础


上一题 下一题