Square Painting

2 secs 1024 MB
yura1685's icon yura1685

問題文

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

  • S:スタート地点。グリッド上にちょうど 11 つだけ存在する。
  • G:ゴール地点。グリッド上にちょうど 11 つだけ存在する。
  • .:白色で塗られたマス。
  • #:黒色で塗られたマス。

 yura君はスタート地点を出発してグリッド上を移動してゴール地点へ行こうとしています。yura君は (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) のいずれかに移動することが出来ます。 ただし、グリッドの外に出るような移動や、黒で塗られたマスへの移動を行うことは出来ません。
お金持ちのyura君は、移動中に次の行動を何度でも行うことが出来ます。

  • NN 円を支払い、好きな N×NN\times N の領域を選びすべて白で塗る。

 yura君がスタート地点からゴール地点へ到達するために必要な最小の金額を求めてください。

制約

  • 2H,W10002 \le H, W \le 1000
  • H,WH, W は整数
  • SiS_iS, G, ., # からなる長さ WW の文字列
  • S, GSi,jS_{i, j} の中でちょうど 11 回だけ登場する.

入力

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

HH WW
S1,1S1,2S1,WS_{1,1}S_{1,2}\ldots S_{1,W}
S2,1S2,2S2,WS_{2,1}S_{2,2}\ldots S_{2,W}
\vdots
SH,1SH,2SH,WS_{H,1}S_{H,2}\ldots S_{H,W}

出力

 yura君がゴールするのに必要な最小の金額を 11 行に出力してください。

入力例1

3 3
S##
.#.
##G

出力例1

1

 (2,2)(2, 2) を白く塗ることで、11 円でゴールすることが出来ます。

入力例2

5 5
S#...
.#.#.
.#.#.
.#.#.
...#G

出力例2

0

 11 円も支払うことなくゴールすることが出来ます。

入力例3

8 8
#.#.#.#.
...##..#
S##.#.#.
#####.#.
#####.##
.#..##.#
##..G#..
.###..##

出力例3

3

提出


Go (1.21)