#abc241f. [abc241_f]Skate

[abc241_f]Skate

问题描述

有一个用网格表示的溜冰场,其中有HH行和WW列。记(i,j)(i, j)为从上往下数第ii行,从左往右数第jj列的方格。

溜冰场上有NN个障碍物。第ii个障碍物位于(Xi,Yi)(X_i,Y_i)处。

在一次移动中,高桥选择上、下、左、右四个方向之一并继续移动,直到撞到一个障碍物为止。当他撞到障碍物时,他停在障碍物前面的方格上。由于溜冰场被悬崖围绕,禁止开始一次移动且永远不会撞到障碍物。

高桥最初位于(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

示例输入1

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

示例输出1

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)

示例输入2

4 6 2
3 2
3 5
4 5
2 5

示例输出2

-1

他必须停在(gx,gy)(g_x,g_y)处。
注意,只是通过(gx,gy)(g_x,g_y)并不被认为是达到目标。

示例输入3

1 10 1
1 5
1 1
1 7

示例输出3

-1


如果他选择向左移动,高桥会在通过(gx,gy)(g_x,g_y)后掉下悬崖。
请注意,由于溜冰场被悬崖围绕,禁止开始一次移动且永远不会撞到障碍物。