atcoder#ABC243H. [ABC243Ex] Builder Takahashi (Enhanced version)

[ABC243Ex] Builder Takahashi (Enhanced version)

配点 : 600600

問題文

縦横 H×WH \times W マスのグリッドがあります。上から ii 行目、左から jj 列目のマスを (i,j)(i,j) と表します。 各マスの状態は Ci,jC_{i,j} で表されます。各マスの状態は次の 44 つのいずれかです。

  • S : スタート地点。グリッド上にちょうど 11 つだけ存在する。
  • G : ゴール地点。グリッド上にちょうど 11 つだけ存在する。
  • . : 壁を建ててよいマス。
  • O : 壁を建ててはいけないマス。

青木君はスタート地点を出発してグリッド上を移動してゴール地点へ行こうとしています。青木君は (i,j)(i,j) にいるときにマス (i+1,j),(i,j+1),(i1,j),(i,j1)(i+1,j),(i,j+1),(i-1,j),(i,j-1) のいずれかに移動することができます。ただし、グリッドの外に出るような移動や、壁があるマスへの移動を行うことはできません。

高橋君は、青木君が移動を開始する前に壁を建ててよいマスを 11 マス以上選んで壁を建てることで、青木君がどのように移動してもゴール地点へ行くことができないようにすることにしました。ただし、スタート地点およびゴール地点は選ぶことができません。

高橋君は青木君がゴールできないように壁を建てることができますか?さらに、壁を建てられる場合は

  • 青木君がゴールできないように壁を建てるときの最小枚数 nn 、および
  • 最小枚数を達成する壁の立て方が何通りあるかを 998244353998244353 で割ったあまり rr

22 つも合わせて計算してください。

制約

  • 2H1002 \leq H \leq 100
  • 2W1002 \leq W \leq 100
  • Ci,jC_{i,j}S, G, ., O のいずれかである。
  • S, GCi,jC_{i,j} の中でちょうど 11 回だけ登場する。

入力

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

HH WW

C1,1C_{1,1}C1,2C_{1,2}\dotsC1,WC_{1,W}

C2,1C_{2,1}C2,2C_{2,2}\dotsC2,WC_{2,W}

\vdots

CH,1C_{H,1}CH,2C_{H,2}\dotsCH,WC_{H,W}

出力

青木君がゴールできないように壁を建てられる場合は、文字列 Yes 、および問題文中で定義された整数 nn, rr を以下の形式で出力せよ。

Yes

nn rr

そうでない場合は No を出力せよ。

4 3
S..
O..
..O
..G
Yes
3 6

壁を建てるマスを # で表すと、最小枚数を達成する壁の建て方は次の 66 通りとなります。

S#.  S.#  S..  S..  S..  S..
O#.  O#.  O##  O.#  O.#  O.#
#.O  #.O  #.O  ##O  .#O  .#O
..G  ..G  ..G  ..G  #.G  .#G
3 2
.G
.O
.S
No

高橋君がどのように壁を建てても青木君はゴール地点へ行くことができます。

2 2
S.
.G
Yes
2 1
10 10
OOO...OOO.
.....OOO.O
OOO.OO.OOO
OOO..O..S.
....O.O.O.
.OO.O.OOOO
..OOOG.O.O
.O.O..OOOO
.O.O.OO...
...O..O..O
Yes
10 12