atcoder#ARC074D. [ARC074F] Lotus Leaves

[ARC074F] Lotus Leaves

配点 : 800800

問題文

長方形の池があります。 池は縦 HH 行、横 WW 列のマス目状に分割されています。 上から ii 行目、左から jj 列目のマスを (i, j)(i,\ j) と表します。

池のいくつかのマスには蓮 (はす) の葉が浮かんでいます。 ある葉 SS にはカエルが乗っており、別の葉 TT まで移動しようとしています。 マス (i, j)(i,\ j) の情報は、文字 aija_{ij} によって次のように表されます。

  • . : 葉が浮かんでいないマスである。
  • o : 葉が浮かんでいるマスである。
  • S : 葉 SS が浮かんでいるマスである。
  • T : 葉 TT が浮かんでいるマスである。

カエルは「今乗っている葉と同じ行または同じ列に浮かんでいる葉へジャンプする」ことを繰り返し行い、葉 TT まで移動しようとしています。

すぬけ君の目標は、あらかじめ葉 SS, TT 以外の葉を何枚か取り除いておくことで、カエルが葉 TT まで移動できないようにすることです。 この目標が達成可能か判定し、可能ならば取り除く葉の枚数の最小値を求めてください。

制約

  • 2H,W1002 \leq H, W \leq 100
  • aija_{ij}., o, S, T のどれかである。
  • aija_{ij} のうち S はちょうど 11 個存在する。
  • aija_{ij} のうち T はちょうど 11 個存在する。

入力

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

HH WW

a11a_{11} ...... a1Wa_{1W}

::

aH1a_{H1} ...... aHWa_{HW}

出力

目標が達成可能ならば、取り除く葉の枚数の最小値を出力せよ。 そうでなければ、代わりに -1 を出力せよ。

3 3
S.o
.o.
o.T
2

右上と左下の葉を取り除けばよいです。

3 4
S...
.oo.
...T
0
4 3
.S.
.o.
.o.
.T.
-1
10 10
.o...o..o.
....o.....
....oo.oo.
..oooo..o.
....oo....
..o..o....
o..o....So
o....T....
....o.....
........oo
5