atcoder#ABC301E. [ABC301E] Pac-Takahashi

[ABC301E] Pac-Takahashi

配点 : 475475

問題文

HHWW 列のグリッドがあります。 上から ii 行目、左から jj 列目のマス目を (i,j)(i,j) と表します。 グリッドの各マスはスタートマス、ゴールマス、空マス、壁マス、お菓子マスのいずれかです。 (i,j)(i,j) が何のマスであるかは文字 Ai,jA_{i,j} によって表され、Ai,j=A_{i,j}= S のときスタートマス、 Ai,j=A_{i,j}= G のときゴールマス、 Ai,j=A_{i,j}= . のとき空マス、 Ai,j=A_{i,j}= # のとき壁マス、 Ai,j=A_{i,j}= o のときお菓子マスです。 ここで、スタートマスとゴールマスはちょうど 11 つずつあり、お菓子マスは 18 個以下であることが保証されます。

高橋くんは現在スタートマスにいます。 高橋くんは、上下左右に隣接するマスであって壁マスでないマスに移動することを繰り返し行えます。 高橋くんは今から TT 回以下の移動によってゴールマスに到達したいです。 そのようなことは可能かどうか判定してください。 可能な場合は、最終的にゴールマスにいるという条件のもとで、移動の途中に訪れるお菓子マスの数の最大値を求めてください。 ただし、11 つのお菓子マスに複数回訪れた場合でも、カウントするのは 11 回のみです。

制約

  • 1H,W3001\leq H,W \leq 300
  • 1T2×1061 \leq T \leq 2\times 10^6
  • H,W,TH,W,T は整数
  • Ai,jA_{i,j}S, G, ., #, o のいずれか
  • Ai,j=A_{i,j}= S を満たす (i,j)(i,j) の組がちょうど 11 つ存在する
  • Ai,j=A_{i,j}= G を満たす (i,j)(i,j) の組がちょうど 11 つ存在する
  • Ai,j=A_{i,j}= o を満たす (i,j)(i,j) の組は 18 個以下

入力

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

HH WW TT

A1,1A1,2A1,WA_{1,1}A_{1,2}\dots A_{1,W}

\vdots

AH,1AH,2AH,WA_{H,1}A_{H,2}\dots A_{H,W}

出力

TT 回以下の移動によってゴールマスに到達することが不可能ならば -1 を出力せよ。 可能ならば、最終的にゴールマスにいるという条件のもとで、移動の途中に訪れるお菓子マスの数の最大値を出力せよ。

3 3 5
S.G
o#o
.#.
1

$(1,1) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (2,3) \rightarrow (1,3)$ と 44 回移動すると、 11 個のお菓子マスを訪れた上で最終的にゴールマスにいることができます。 55 回以下の移動で 22 個のお菓子マスを訪れた上で最終的にゴールマスにいることはできないので、11 が答えです。

なお、$(1,1) \rightarrow (2,1) \rightarrow (1,1) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (2,3)$ と移動すると 55 回の移動で 22 個のお菓子マスを訪れることができますが、最終的にゴールマスにいないため無効であることに注意してください。

3 3 1
S.G
.#o
o#.
-1

11 回以下の移動でゴールマスに到達することはできません。

5 10 2000000
S.o..ooo..
..o..o.o..
..o..ooo..
..o..o.o..
..o..ooo.G
18