#abc301e. [abc301_e]Pac-Takahashi
[abc301_e]Pac-Takahashi
問題文
行 列のグリッドがあります。 上から 行目、左から 列目のマス目を と表します。 グリッドの各マスはスタートマス、ゴールマス、空マス、壁マス、お菓子マスのいずれかです。 が何のマスであるかは文字 によって表され、 S
のときスタートマス、 G
のときゴールマス、 .
のとき空マス、 #
のとき壁マス、 o
のときお菓子マスです。 ここで、スタートマスとゴールマスはちょうど つずつあり、お菓子マスは 個以下であることが保証されます。
高橋くんは現在スタートマスにいます。 高橋くんは、上下左右に隣接するマスであって壁マスでないマスに移動することを繰り返し行えます。 高橋くんは今から 回以下の移動によってゴールマスに到達したいです。 そのようなことは可能かどうか判定してください。 可能な場合は、最終的にゴールマスにいるという条件のもとで、移動の途中に訪れるお菓子マスの数の最大値を求めてください。 ただし、 つのお菓子マスに複数回訪れた場合でも、カウントするのは 回のみです。
制約
- は整数
- は
S
,G
,.
,#
,o
のいずれか -
S
を満たす の組がちょうど つ存在する -
G
を満たす の組がちょうど つ存在する -
o
を満たす の組は 個以下
入力
入力は以下の形式で標準入力から与えられる。
出力
回以下の移動によってゴールマスに到達することが不可能ならば -1
を出力せよ。 可能ならば、最終的にゴールマスにいるという条件のもとで、移動の途中に訪れるお菓子マスの数の最大値を出力せよ。
入力例 1
3 3 5
S.G
o#o
.#.
出力例 1
1
$(1,1) \\rightarrow (1,2) \\rightarrow (1,3) \\rightarrow (2,3) \\rightarrow (1,3)$ と 回移動すると、 個のお菓子マスを訪れた上で最終的にゴールマスにいることができます。 回以下の移動で 個のお菓子マスを訪れた上で最終的にゴールマスにいることはできないので、 が答えです。
なお、$(1,1) \\rightarrow (2,1) \\rightarrow (1,1) \\rightarrow (1,2) \\rightarrow (1,3) \\rightarrow (2,3)$ と移動すると 回の移動で 個のお菓子マスを訪れることができますが、最終的にゴールマスにいないため無効であることに注意してください。
入力例 2
3 3 1
S.G
.#o
o#.
出力例 2
-1
回以下の移動でゴールマスに到達することはできません。
入力例 3
5 10 2000000
S.o..ooo..
..o..o.o..
..o..ooo..
..o..o.o..
..o..ooo.G
出力例 3
18