No.3199 Key-Door Grid
タグ : / 解いたユーザー数 112
作問者 :
Nauclhlt🪷
問題文
$H$ 行 $W$ 列のグリッドで構成された迷宮があります。
あなたはその迷宮を探検し、スタート地点Sからゴール地点Gまで、最も少ない移動回数でたどり着くことを目指します。
迷宮の各マスは、以下のいずれかの文字で表されます。
.: 通路#: 壁(通れない)S: スタート地点である通路G: ゴール地点である通路1~9: 対応する種類の「鍵」が置かれている通路a~i: 対応する種類の「扉」がある通路
迷宮には $M$ 種類の鍵が存在します。鍵 $k\ (1\leq k\leq M)$ は、アルファベットの $k$ 番目の小文字に対応する扉(1ならa、2ならb、...)を開けることができます。
あなたは、以下のルールに従って移動します。
- 現在いるマスから、上下左右に隣接するマスへ $1$ マスずつ移動できます。
- 壁のマスへは移動できません。
- あなたは最初鍵を持っていない状態からスタートし、一度に $1$ つだけ鍵を持つことができます。
- 鍵が置かれているマスに移動すると、あなたは自動的にその鍵を拾います。その際、それまで持っていた鍵はもとあった場所に戻り、新しい鍵に持ち替えます。
- 扉のマスを通過するためには、その扉に対応した種類の鍵を持っている必要があります。
- 扉は通過しても鍵を消費することはなく、また、一度開けても鍵を持ち替えれば再び施錠された状態に戻ります。
スタート地点Sからゴール地点Gまでの最小移動回数を求めてください。もし、ゴールにたどり着けない場合は-1を出力してください。
入力
$H\ W\ M$ $S_1$ $\vdots$ $S_H$
- $2\leq H,W\leq 500$
- $0\leq M\leq 9$
- $S_i$ は、問題文中で示された文字で構成された長さ $W$ の文字列
- $S$ には
SとGがちょうど $1$ つずつ含まれる
出力
ゴールまでの最小移動回数を出力してください。到達不能な場合は-1を出力してください。
最後に改行してください。
サンプル
サンプル1
入力
5 5 2 S.1.. ##.## .2a.. #.### ....G
出力
10
この迷宮には $2$ 種類の鍵(1, 2)と、$1$ 種類の扉(a)が存在します。
最短経路の一例は、
Sである $(1,1)$ から $(1,3)$ へ移動して鍵1を拾い[移動 $2$ 回]- $(3,3)$ にある扉
aを鍵1で通過し[移動 $2$ 回] - $(3,2)$ で鍵
1を捨てて鍵2を拾い[移動 $1$ 回] - そこからゴールの
Gである $(5,5)$ へ向かう[移動 $5$ 回]
サンプル2
入力
2 3 2 S#G 12a
出力
-1
Sである $(1,1)$ から $(2,1)$ へ移動して鍵1を拾いますが、$(2,2)$ へ移動すると鍵2を拾い鍵1を捨てます。
$(2,3)$ の扉aを通過できず、ゴールのGにたどり着くことができないため-1を出力します。
サンプル3
入力
9 9 3 bbbbbbbbb bS1cc3bcb b3acbb2cb b2a1bcc3b aaacbb1cb accc3cbcb a2aaacbbb acccacccc aaaaaaacG
出力
24
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。