atcoder#ABC243H. [ABC243Ex] Builder Takahashi (Enhanced version)
[ABC243Ex] Builder Takahashi (Enhanced version)
配点 : 点
問題文
縦横 マスのグリッドがあります。上から 行目、左から 列目のマスを と表します。 各マスの状態は で表されます。各マスの状態は次の つのいずれかです。
S
: スタート地点。グリッド上にちょうど つだけ存在する。G
: ゴール地点。グリッド上にちょうど つだけ存在する。.
: 壁を建ててよいマス。O
: 壁を建ててはいけないマス。
青木君はスタート地点を出発してグリッド上を移動してゴール地点へ行こうとしています。青木君は にいるときにマス のいずれかに移動することができます。ただし、グリッドの外に出るような移動や、壁があるマスへの移動を行うことはできません。
高橋君は、青木君が移動を開始する前に壁を建ててよいマスを マス以上選んで壁を建てることで、青木君がどのように移動してもゴール地点へ行くことができないようにすることにしました。ただし、スタート地点およびゴール地点は選ぶことができません。
高橋君は青木君がゴールできないように壁を建てることができますか?さらに、壁を建てられる場合は
- 青木君がゴールできないように壁を建てるときの最小枚数 、および
- 最小枚数を達成する壁の立て方が何通りあるかを で割ったあまり
の つも合わせて計算してください。
制約
- は
S
,G
,.
,O
のいずれかである。 S
,G
は の中でちょうど 回だけ登場する。
入力
入力は以下の形式で標準入力から与えられる。
出力
青木君がゴールできないように壁を建てられる場合は、文字列 Yes
、および問題文中で定義された整数 , を以下の形式で出力せよ。
Yes
そうでない場合は No
を出力せよ。
4 3
S..
O..
..O
..G
Yes
3 6
壁を建てるマスを #
で表すと、最小枚数を達成する壁の建て方は次の 通りとなります。
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