atcoder#ABC184E. [ABC184E] Third Avenue
[ABC184E] Third Avenue
配点 : 点
問題文
縦 マス、横 マスの 次元グリッドで表された街があります。
上から 行目、左から 列目のマスの情報が文字 により与えられます。 は S
, G
, .
, #
, a
~ z
のいずれかです。
#
は入ることができないマスを、a
~ z
はテレポーターのあるマスを表します。
高橋くんははじめ S
のマスにおり、 秒ごとに以下のいずれかの移動を行います。
- 現在いるマスと上下左右に隣り合う、
#
でないマスに移動する。 - 今いるマスと同じ文字が書かれているマスを つ選び、そこにテレポートする。この移動は現在いるマスが
a
~z
のいずれかであるとき使える。
高橋くんが S
のマスから G
のマスに移動するのに必要な最短の時間を求めてください。
ただし、どうしても G
のマスにたどり着けない場合は、代わりに -1
を出力してください。
制約
- は
S
,G
,.
,#
, 英小文字のいずれか S
のマスとG
のマスはちょうど つ存在する
入力
入力は以下の形式で標準入力から与えられる。
出力
S
のマスから G
のマスに移動するのに必要な最短時間を出力せよ。
S
のマスから G
のマスに移動する方法が存在しない場合は、代わりに -1
を出力せよ。
2 5
S.b.b
a.a.G
4
上から 行目、左から 列目のマスを で表すこととします。 はじめ、高橋くんは にいます。 例えば、以下のような手順で 秒で に移動することができます。
- から に移動する
- と同じ
a
のマスである にテレポートする - から に移動する
- から に移動する
11 11
S##...#c...
...#d.#.#..
..........#
.#....#...#
#.....bc...
#.##......#
.......c..#
..#........
a..........
d..#...a...
.#........G
14
11 11
.#.#.e#a...
.b..##..#..
#....#.#..#
.#dd..#..#.
....#...#e.
c#.#a....#.
.....#..#.e
.#....#b.#.
.#...#..#..
......#c#G.
#..S...#...
-1