有一个 H 行 W 列的网格场地。第 i 行 j 列是字符 A_{i, j}。每个字符的含义如下:
- `.`:一个空方块,可以通过。
- `#`:一个障碍物,无法通过。
- `>`、`v`、`<`、`^`:朝东、朝南、朝西、朝北的人所在的方块,无法通过。人的视线宽度为一个方块,并且沿着人的朝向直线延伸,直到被障碍物或其他人阻挡。
- `S`:起点方块,可以通过。只有一个起点方块,保证不会出现在任何人的视线中。
- `G`:目标方块,可以通过。只有一个目标方块,保证不会出现在任何人的视线中。
小Z 位于起点方块,可以任意次数地向东、向西、向南、向北移动一格。然而,他不能进入障碍方块或离开场地。
请判断他是否可以到达目标方块而不进入任何人的视线。如果可以,找出所需的最小移动次数,否则,输出 `-1`。
第一行 两个数字表示H 行 W 列;
接下来一个二维字符数组表示网格图
逃离的最少步数,如不能,则输出"-1"
5 7 ....Sv. .>..... ....... >..<.#< ^G....>
15
4 3 S.. .<. .>. ..G
-1
- 60%的数据: 2\ \leq\ H,\ W\ \leq\ 50
- 100%的数据: 2\ \leq\ H,\ W\ \leq\ 2000
- A_{i,j} ∈ `.`, `#`, `>`, `v`, `<`, `^`, `S`, `G` 只有这几种字符
- `S`, `G`保证只出现一次