#ATabc317e. [ABC317E] Avoid Eye Contact

[ABC317E] Avoid Eye Contact

题目描述

有一个被划分为 HHWW 列的网格状场地。
从北侧(上方)数第 ii 行,从西侧(左侧)数第 jj 列的格子用字符 Ai,jA_{i,j} 表示。各字符的含义如下:

  • . :空格,可以进入。
  • # :障碍物,不能进入。
  • >v<^ :分别表示有一个人面朝东、南、西、北站在该格子,不能进入。人的视线宽度为 11 格,会沿着其面朝的方向笔直延伸,直到被障碍物或其他人阻挡为止。(也请参考输入输出样例 11 的说明。)
  • S :起点,可以进入。恰好只出现一次。保证不在任何人的视线范围内。
  • G :终点,可以进入。恰好只出现一次。保证不在任何人的视线范围内。

ナオヒロ君站在起点,可以任意多次向东西南北四个方向移动一格。但不能移动到不可进入的格子,也不能移出场地外。
请判断他是否能在不进入任何人的视线范围的情况下到达终点。如果可以,请求出所需的最小移动次数。

输入格式

输入按以下格式从标准输入给出。

HH WW
A1,1A1,2A1,WA_{1,1}A_{1,2}\dots A_{1,W}
A2,1A2,2A2,WA_{2,1}A_{2,2}\dots A_{2,W}
\vdots
AH,1AH,2AH,WA_{H,1}A_{H,2}\dots A_{H,W}

输出格式

如果ナオヒロ君能够在不进入任何人的视线范围的情况下到达终点,请输出所需的最小移动次数。如果无法到达,请输出 -1

样例 1

输入

5 7
....Sv.
.>.....
.......
>..<.#<
^G....>

输出

15

样例 2

输入

4 3
S..
.<.
.>.
..G

输出

-1

说明/提示

限制条件

  • 2H,W20002 \leq H, W \leq 2000
  • Ai,jA_{i,j} 只会是 ., #, >, v, <, ^, S, G 这几种字符之一
  • SGAi,jA_{i,j} 中各出现且仅出现一次
  • 起点和终点都保证不在任何人的视线范围内

样例解释 1

对于输入样例 11,如果用 ! 表示被至少一个人的视线覆盖的空格,场地如下图所示。
image2
对部分格子具体说明如下(这里用 (i,j)(i, j) 表示北侧第 ii 行、西侧第 jj 列的格子):

  • (2,4)(2, 4)(2,2)(2, 2) 处面朝东的人视线覆盖。
  • (2,6)(2, 6)(2,2)(2, 2) 处面朝东的人和 (1,6)(1, 6) 处面朝南的两个人的视线覆盖。
  • (4,5)(4, 5) 没有被任何人的视线覆盖。(4,7)(4, 7) 处面朝西的人的视线被 (4,6)(4, 6) 的障碍物阻挡,(4,1)(4, 1) 处面朝东的人的视线被 (4,4)(4, 4) 的人阻挡。 ナオヒロ君必须避开不可进入的格子和被视线覆盖的格子,才能到达终点。

样例解释 2

如果ナオヒロ君无法到达终点,请输出 -1

由 ChatGPT 4.1 翻译