3703: 【BFS】2023B-士兵突击

金币值:1 时间限制:2.000 s 内存限制:128 M
正确:51 提交:109 正确率:46.79% 命题人:

题目描述

在一个 M ∗ N 的街区中,有一个士兵 S 和一个敌人 E, 标识 X 为无法通过的街区,标识 B 为可以通过的街区;士兵在一个单位时间内可以从一个街区移动到相邻的街区(士兵每次只能水平或者垂直方向移动一个街区);士兵每次改变方向时,需要额外花费1个单位的时间(士兵第一次移动个街区的时候,不用考虑其初始方向,即只需要一个单位时间即可到达相邻街区)。                 计算士兵 S 最少需要多少时间才能到达 E 所在的街区。

输入格式

第一行为两个数字,表示街区的大小,M 行,N 列,存在1 < = M ∗ N < = 1000,且MN 不同时为 1
接下来输入 M 行,每行 N 个字母,字母 S 表示士兵所在街区,字母 E 表示敌人所在街区,字母 X 表示障碍,字母 B 表示可以经过的街区。有且仅有 1S 和一个 E

输出格式

输出士兵 S 到达敌人 E 所在的街区时最少需要的时间;当士兵 S 永远无法到达敌人 E 所在的街区时,输出 -1

输入样例    复制

6 6
SBBBBB
BXXXXB
BBXBBB
XBBXXB
BXBBXB
BBXBEB

输出样例    复制

13