atcoder#AGC014C. [AGC014C] Closed Rooms

[AGC014C] Closed Rooms

配点 : 700700

問題文

高橋君は建物の中に閉じ込められてしまいました。

この建物は HHWW 列に並んだ H×WH \times W 個の部屋からなり、上から ii 行目、左から jj 列目の部屋は (i,j)(i,j) で表され、その部屋の状態は Ai,jA_{i,j} で表されています。 Ai,j=A_{i,j}= # の場合は、この部屋は閉じられており、Ai,j=A_{i,j}= . の場合は、この部屋には自由に出入りできます。 そして、 Ai,j=A_{i,j}= S となる部屋が高橋君の今いる部屋です。ただし、高橋君が今いる部屋も自由に出入りできる部屋です。

また、11 行目、11 列目、HH 行目、WW 列目のいずれかに含まれる部屋は建物の外につながっており、 それ以外の各部屋 (i,j)(i,j)44 つの部屋 (i1,j)(i-1,j) ,, (i+1,j)(i+1,j) ,, (i,j1)(i,j-1) ,, (i,j+1)(i,j+1) と隣接しています。

高橋君はこの建物から脱出するために魔法を使うことにしました。一回の魔法で高橋君は以下の操作ができます。

  • 高橋君は今いる部屋から隣り合う部屋に移動することを KK 回まで繰り返す。ただし、閉じられている部屋には移動することはできない。
  • その後、閉じられている部屋を KK 個まで選び、それらを開いた状態にする。それらの部屋は以降自由に出入りできるようになる。

ただし、これらの操作では、全く動かなかったり、閉じられている部屋があっても開かなかったりしてもよいです。

高橋君の目標は建物の外につながっている部屋のいずれかにたどり着くことです。そのために必要な魔法の回数の最小値を求めてください。

ただし、はじめに高橋君がいる部屋は建物の外とはつながっていないことが保証されています。

制約

  • 3H8003 \leq H \leq 800
  • 3W8003 \leq W \leq 800
  • 1KH×W1 \leq K \leq H \times W
  • Ai,jA_{i,j}# , . , S のいずれかである。
  • Ai,j=A_{i,j}= S となる (i,j)(i,j) は一意に存在し、2iH1,2jW12 \leq i \leq H-1 , 2 \leq j \leq W-1 を満たす。

入力

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

HH WW KK

A1,1A1,2A_{1,1}A_{1,2}...A1,WA_{1,W}

:

AH,1AH,2A_{H,1}A_{H,2}...AH,WA_{H,W}

出力

高橋君が必要な魔法の回数の最小値を出力せよ。

3 3 3
#.#
#S.
###
1

高橋君は最初の魔法で部屋 (1,2)(1,2) に移動することができるので、11 回の魔法で十分です。

3 3 3
###
#S#
###
2

高橋君は最初の魔法では移動することができないですが、部屋 (1,2)(1,2)11 回目の魔法で開けることができます。 そして、次の魔法で部屋 (1,2)(1,2) に移動することで、22 回の魔法で目標を達成できます。

7 7 2
#######
#######
##...##
###S###
##.#.##
###.###
#######
2