Game - Can you solve this maze?

2 secs 1024 MB
Tomo271828's icon Tomo271828

問題文

ゲーム開発班のメンバーが迷路から脱出するゲームを作りました。

攻略する迷路は HHWW 列のグリッドで表され、各マスは空きマスか壁です。グリッドの上から ii 行目、左から jj 列目のマスを (i,j)(i,j) と表します。

また、迷路のいずれかの空きマスにはプレイヤー、敵、ゴール地点があります。

各マスは HH 個の文字列 S1,S2,,SHS_1,S_2,\dotsc,S_H で表され、

  • SiS_ijj文字目が # のとき、(i,j)(i,j) は壁
  • SiS_ijj文字目が . のとき、(i,j)(i,j) は空きマス
  • SiS_ijj文字目が S のとき、(i,j)(i,j) はプレイヤーのスタート地点
  • SiS_ijj文字目が G のとき、(i,j)(i,j) はゴール地点
  • SiS_ijj文字目が E のとき、(i,j)(i,j) は敵のスタート地点

となっています。

このグリッド上でプレイヤーはゲームをします。

このゲームはプレイヤーと敵のターン制で進行し、先攻はプレイヤーです。

プレイヤーは自分のターンのおいて、隣接する空きマスに移動するか、移動しないことができます。

敵は自分のターンにおいて、現在のプレイヤーの位置まで到達するまでに経由しなければならない空きマスの数が少なくなるような、隣接する空きマスに移動します。

なお、そのような空きマスが複数存在する場合、上、右、下、左の優先順位で移動します。

プレイヤーと敵が同じマスに存在するようになった場合、プレイヤーの敗北です。

プレイヤーが敗北せずにゴール地点まで到達できるか判定してください。

なお、簡単のため、以下の条件を満たす i,j(1iH2,1jW2)i,j (1 \leq i \leq H - 2,1 \leq j \leq W - 2) が存在しない入力のみが与えられます。

  • (i,j),(i+1,j),(i,j+1),(i+1,j+1)(i,j),(i + 1,j),(i,j + 1),(i + 1,j + 1) がすべて空きマスである

制約

  • 2H,W8002 \leq H,W \leq 800
  • H,WH,W は整数
  • SiS_i は長さ WW の #,.,S,G,E のみからなる文字列
  • SiS_ijj 文字目が S となる (i,j)(i,j) の組はちょうど11
  • SiS_ijj 文字目が G となる (i,j)(i,j) の組はちょうど11
  • SiS_ijj 文字目が E となる (i,j)(i,j) の組はちょうど11

入力

入力は以下の形式で標準入力から与えられます。

HHWW
S1S_{1}
S2S_{2}
\vdots
SHS_{H}

出力

プレイヤーが敗北せずにゴール地点に到達できるならばYes、そうでないならばNoと出力してください。

サンプル

入力例1
4 4
#E##
#.#G
#...
#S##
出力例1
Yes

プレイヤーはゴールまで直行することで攻略可能です。

入力例2
4 4
#G##
#.#S
#...
#E##
出力例2
No

どのように動いたとしても、プレイヤーは敵と同じマスに到達してしまうため、攻略不可能です。

入力例3
4 4
#.E#
G.##
##.S
####
出力例3
No

敵の行動にかかわらず、攻略不可能な場合もあります。

入力例4
7 16
#S##############
#.##...........#
#.#..#.####.####
#...##.####....#
#.#..#.#E#####.#
#.##...........#
##############G#
出力例4
Yes

提出


Go (1.21)