시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
5 초 | 512 MB | 110 | 42 | 29 | 32.584% |
JOI 君の住む IOI 市は,1 年を通じてとても暑くなることが知られている.
IOI 市は,縦 H × 横 W マスに区切られた長方形の形をしている.それぞれのマスは,建物か,野原か, 壁のいずれかである.建物のマスは P 個あり,1 から P までの番号が付けられている.
JOI 君は,建物か野原のマスのみに入ることができる.また,あるマスから直接移動できるマスは,そ のマスと隣接している(すなわち,1 辺を共有している)マスのみであり,JOI 君は移動の途中で IOI 市の 外に出ることはできない.
JOI 君は,様々な用事のためにいろいろな建物の間を歩いて移動する必要がある.建物の中は冷房が効い ているが,野原は日差しが強く暑いため,野原のマスを 1 マス通るごとに水が 1 必要である.さらに野原 には自動販売機や水飲み場などはないので,IOI 市では水筒を持って移動を行うことが一般的である.大 きさ x の水筒には,水を最大で x 入れることができる.建物のマスには水道があるので,水筒いっぱいに 水を補給することができる. 大きい水筒は持ち運びが大変なので,JOI 君はできるだけ小さい水筒を用いて移動を行いたい.そこで, いくつかの建物間の移動について,JOI 君がその移動のために必要な水筒の大きさの最小値を求めるプロ グラムを書いてほしい.
IOI 市の地図および,Q 個の質問が与えられる.i 番目 (1 5 i 5 Q) の質問は,「建物 S i , Ti の間を移動する のに必要な水筒の大きさの最小値は何か」というものである.このとき,それぞれの質問に答えるプログ ラムを作成せよ.
標準入力から以下のデータを読み込め.
標準出力に Q 行出力せよ.i 行目 (1 ≤ i ≤ Q) に,建物 Si , Ti の間を移動するのに必要な水筒の大きさの 最小値を表す整数を出力せよ.ただし,移動が不可能な場合は,-1 を出力せよ.また,野原のマスを通ら ずに移動が行える場合は,0 を出力せよ.
追加の制限はない.
5 5 4 4 ..... ..##. .#... ..#.. ..... 1 1 4 2 3 3 2 5 1 2 2 4 1 3 3 4
3 4 4 2
この入力において,IOI 市の地図は下図のようになる.黒の四角形が書かれたマスは壁を,数字の書か れたマスはその番号の建物を,何もないマスは野原を表す.
例えば,建物 2 から建物 4 まで移動することを考える.
このとき,他の建物を経由しない場合は,左の図の点で示したマスを通るのが最も経由する野原のマス 数が少なく,大きさ 6 の水筒が必要になる.
しかし,右の図のように,移動の際に建物 1 を経由することにすると,建物 2 から建物 1 の移動の間で は野原を 3 マス通り,建物 1 から建物 4 の移動の間では野原を 4 マス通るため,大きさ 4 の水筒で移動す ることができる.また,これより小さい水筒を持って移動することはできない.
5 5 3 2 ...#. ..#.. #.... .##.. ...#. 1 3 5 2 1 5 1 2 1 3
-1 7