本篇题解:速战速决 or 士兵突击
在一个 M ∗ N M*N M ∗ N 的街区中,有一个士兵 S S S 和一个敌人 E E E , 标识 X X X 为无法通过的街区,标识 B B B 为可以通过的街区;
士兵在一个单位时间内可以从一个街区移动到相邻的街区(土兵每次只能水平或者垂直方向移动一个街区);
士兵每次改变方向时,需要额外花费个 单位的时间(士兵第一次移动个街区的时候,不用考虑其初始方向,即只需要一个单位时间即可到达相邻街区)。
计算士兵 S S S 最少需要多少时间才能到达 E E E 所在的街区。
输入
第一行为两个数字,表示街区的大小, M M M 行, N N N 列; ( 1 < = M ∗ N < = 1000 1 <= M*N<=1000 1 <= M ∗ N <= 1000 , M M M 、 N N N 不同时为 1)
接下来 M M M 行,每行 N N N 个字母,字母 S S S 表示士兵所在街区,字母 E E E 表示敌人所在街区,字母 X X X 表示障碍,字母 B B B 表示可以经过的街区。(只有 1 个 S S S ,一个 E E E )
输出
最少需要的时间,当士兵 S S S 永远无法到达敌人 E E E 所在的街区时,输出 − 1 -1 − 1 。