시간 제한메모리 제한제출정답맞힌 사람정답 비율
5 초 512 MB110422932.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 の間を移動する のに必要な水筒の大きさの最小値は何か」というものである.このとき,それぞれの質問に答えるプログ ラムを作成せよ.

입력

標準入力から以下のデータを読み込め.

  • 1 行目には整数 H, W, P, Q が空白を区切りとして書かれている.これは,IOI 市は縦 H × 横 W マスに 区切られた長方形の形をしており,IOI 市には建物のマスが P 個あり,プログラムに与えられる質問 の数が Q であることを表す.
  • 続く H 行には IOI 市の地図が書かれている.このうちの r 行目 (1 ≤ r ≤ H) には,W 文字の文字列 が書かれており,この文字列の各文字は “.” または “#” のいずれかである.この文字列の c 文字目 (1 ≤ c ≤ W) は,IOI 市の上から r 行目,左から c 列目のマスが何であるかを表し,“.” は建物または 野原を,“#” は壁を表す.
  • 続く P 行には IOI 市にある建物の位置が書かれている.このうちの j 行目 (1 ≤ j ≤ P) には,整数 Aj, Bj が空白を区切りとして書かれている.これは,建物 j が IOI 市の上から Aj 列目,左から Bj 行 目のマスにあることを表す.先に与えられる地図上で,対応するマスは “.” であることが保証される.
  • 続く Q 行のうちの i 行目 (1 ≤ i ≤ Q) には,整数 Si , Ti が空白を区切りとして書かれている.これは, i 番目の質問が,「建物 Si, Ti の間を移動するのに必要な水筒の大きさの最小値は何か」であることを 表す.

출력

標準出力に Q 行出力せよ.i 行目 (1 ≤ i ≤ Q) に,建物 Si , Ti の間を移動するのに必要な水筒の大きさの 最小値を表す整数を出力せよ.ただし,移動が不可能な場合は,-1 を出力せよ.また,野原のマスを通ら ずに移動が行える場合は,0 を出力せよ.

제한

  • 1 ≤ H ≤ 2 000.
  • 1 ≤ W ≤ 2 000.
  • 2 ≤ P ≤ 200 000.
  • 1 ≤ Q ≤ 200 000.
  • 1 ≤ Aj ≤ H (1 ≤ j ≤ P) .
  • 1 ≤ Bj ≤ W (1 ≤ j ≤ P) .
  • (Ai, Bi) ≠ (Aj, Bj) (1 ≤ i < j ≤ P) .
  • 1 ≤ Si < Ti ≤ P (1 ≤ i ≤ Q) .

서브태스크 1 (10점)

  • H ≤ 200.
  • W ≤ 200.
  • P ≤ 200.

서브태스크 2 (30점)

  • P ≤ 5 000.
  • Q = 1.

서브태스크 3 (30점)

  • P ≤ 5 000.
  • Q ≤ 10 000.

서브태스크 4 (30점)

追加の制限はない.

예제 입력 1

5 5 4 4
.....
..##.
.#...
..#..
.....
1 1
4 2
3 3
2 5
1 2
2 4
1 3
3 4

예제 출력 1

3
4
4
2

この入力において,IOI 市の地図は下図のようになる.黒の四角形が書かれたマスは壁を,数字の書か れたマスはその番号の建物を,何もないマスは野原を表す.

例えば,建物 2 から建物 4 まで移動することを考える.

このとき,他の建物を経由しない場合は,左の図の点で示したマスを通るのが最も経由する野原のマス 数が少なく,大きさ 6 の水筒が必要になる.

しかし,右の図のように,移動の際に建物 1 を経由することにすると,建物 2 から建物 1 の移動の間で は野原を 3 マス通り,建物 1 から建物 4 の移動の間では野原を 4 マス通るため,大きさ 4 の水筒で移動す ることができる.また,これより小さい水筒を持って移動することはできない.

예제 입력 2

5 5 3 2
...#.
..#..
#....
.##..
...#.
1 3
5 2
1 5
1 2
1 3

예제 출력 2

-1
7

채점 및 기타 정보

  • 예제는 채점하지 않는다.