atcoder#ABC241F. [ABC241F] Skate

[ABC241F] Skate

配点 : 500500

問題文

HHWW 列のグリッド型のスケート場があります。上から ii 行目、左から jj 行目のマスを (i,j)(i,j) で表します。

スケート場には NN 個の障害物があり、ii 個目の障害物は (Xi,Yi)(X_i,Y_i) に置かれています。

高橋君は 11 回の移動において、上下左右いずれかの方向を選んで、障害物に当たるまで進み続けます。 障害物に当たるとその 11 つ手前のマスで停止します。 なお、スケート場の周りは崖になっており、障害物に当たらないような移動は禁止とします。

高橋君ははじめ (sx,sy)(s_x,s_y) にいて、何回か移動することで (gx,gy)(g_x,g_y) で停止したいと考えています。

(gx,gy)(g_x,g_y) へ辿り着くには最小で何回の移動が必要ですか?辿り着けないときはその旨を伝えてください。

制約

  • 1H1091\leq H \leq 10^9
  • 1W1091\leq W \leq 10^9
  • 1N1051\leq N \leq 10^5
  • 1sx,gxH1\leq s_x,g_x\leq H
  • 1sy,gyW1\leq s_y,g_y\leq W
  • 1XiH1\leq X_i \leq H
  • 1YiW1\leq Y_i \leq W
  • (sx,sy)(gx,gy)(s_x,s_y)\neq (g_x,g_y)
  • (sx,sy)(Xi,Yi)(s_x,s_y)\neq (X_i,Y_i)
  • (gx,gy)(Xi,Yi)(g_x,g_y)\neq (X_i,Y_i)
  • iji\neq j ならば、(Xi,Yi)(Xj,Yj)(X_i,Y_i)\neq (X_j,Y_j)
  • 入力は全て整数である

入力

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

HH WW NN

sxs_x sys_y

gxg_x gyg_y

X1X_1 Y1Y_1

X2X_2 Y2Y_2

\vdots

XNX_N YNY_N

出力

(gx,gy)(g_x,g_y) へ辿り着くには最小で何回の移動が必要か出力せよ。 ただし、辿り着けないならば -1 と出力せよ。

7 8 7
3 4
5 6
1 4
2 1
2 8
4 5
5 7
6 2
6 6
4

図は、(sx,sy)(s_x,s_y)S で、(gx,gy)(g_x,g_y)G で表しています。 $(3,4)\rightarrow(2,4) \rightarrow(2,2) \rightarrow(5,2) \rightarrow(5,6)$ と移動すると、44 回の移動で (gx,gy)(g_x,g_y) に辿り着くことができます。

4 6 2
3 2
3 5
4 5
2 5
-1

(gx,gy)(g_x,g_y) で停止する必要があります。 通過しただけでは (gx,gy)(g_x,g_y) へ辿り着いたとみなされないことに注意してください。

1 10 1
1 5
1 1
1 7
-1

左を選んで進むと、高橋君は (gx,gy)(g_x,g_y) を通過したのちに崖に落ちてしまいます。 スケート場の周りは崖になっており、障害物に当たらないような移動は禁止されていることに注意してください。