#ATabc317e. [ABC317E] Avoid Eye Contact
[ABC317E] Avoid Eye Contact
题目描述
有一个被划分为 行 列的网格状场地。
从北侧(上方)数第 行,从西侧(左侧)数第 列的格子用字符 表示。各字符的含义如下:
.:空格,可以进入。#:障碍物,不能进入。>、v、<、^:分别表示有一个人面朝东、南、西、北站在该格子,不能进入。人的视线宽度为 格,会沿着其面朝的方向笔直延伸,直到被障碍物或其他人阻挡为止。(也请参考输入输出样例 的说明。)S:起点,可以进入。恰好只出现一次。保证不在任何人的视线范围内。G:终点,可以进入。恰好只出现一次。保证不在任何人的视线范围内。
ナオヒロ君站在起点,可以任意多次向东西南北四个方向移动一格。但不能移动到不可进入的格子,也不能移出场地外。
请判断他是否能在不进入任何人的视线范围的情况下到达终点。如果可以,请求出所需的最小移动次数。
输入格式
输入按以下格式从标准输入给出。
输出格式
如果ナオヒロ君能够在不进入任何人的视线范围的情况下到达终点,请输出所需的最小移动次数。如果无法到达,请输出 -1。
样例 1
输入
5 7
....Sv.
.>.....
.......
>..<.#<
^G....>
输出
15
样例 2
输入
4 3
S..
.<.
.>.
..G
输出
-1
说明/提示
限制条件
- 只会是
.,#,>,v,<,^,S,G这几种字符之一 S和G在 中各出现且仅出现一次- 起点和终点都保证不在任何人的视线范围内
样例解释 1
对于输入样例 ,如果用 ! 表示被至少一个人的视线覆盖的空格,场地如下图所示。

对部分格子具体说明如下(这里用 表示北侧第 行、西侧第 列的格子):
- 被 处面朝东的人视线覆盖。
- 被 处面朝东的人和 处面朝南的两个人的视线覆盖。
- 没有被任何人的视线覆盖。 处面朝西的人的视线被 的障碍物阻挡, 处面朝东的人的视线被 的人阻挡。 ナオヒロ君必须避开不可进入的格子和被视线覆盖的格子,才能到达终点。
样例解释 2
如果ナオヒロ君无法到达终点,请输出 -1。
由 ChatGPT 4.1 翻译