2667 - 走迷宫

迷宫是一个N \times M ,N行M列的矩阵。玩家需要从初始位置移动到终点位置,移动到相邻(上/下/左/右)的格子视为1步,求最小移动步数。

'.'表示是一个空格,迷宫可以站人

'#'表示是迷宫的墙/障碍物,不能站人

'S'表示玩家初始位置(可以站人)

'E'表示玩家需要抵达的终点位置(可以站人)

输入

第一行两个数字N,M

下面N行,每行M个字符,描述迷宫每格的状态

输出

仅一个数字,表示玩家从初始位置到达终点位置的最少步数。

如果无法到达,那么输出-1

样例

输入

10 8
########
#.#.##.#
#.#..#.#
##....##
#.#.#S.#
#.#...##
#.#....#
#E##.#.#
###..#.#
########

输出

-1

输入

7 10
##########
#.......##
#.####..##
#....##.##
###...#..#
#S...##.E#
##########

输出

19

提示

N,M \leq 2000 保证迷宫的最外围都是墙

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题