#AT2090. F - Skate

F - Skate

当前没有测试数据。

F - 滑冰

得分:500分

题目描述

有一个用$H$行$W$列的网格表示的滑冰场。设$(i, j)$表示从上到下第$i$行,从左到右第$j$列的方块。

滑冰场上有$N$个障碍物。第$i$个障碍物被放置在位置$(X_i,Y_i)$。

在一次移动中,高桥选择上、下、左、右四个方向之一,并保持移动直到撞到一个障碍物为止。
当他撞到一个障碍物时,他停在障碍物前面的方块上。 由于滑冰场四周都是悬崖,因此禁止开始一个移动,其中他永远不会撞到障碍物。

高桥初始位置是$(s_x,s_y)$。他想要移动一些步骤,停在$(g_x,g_y)$处。

找到到达$(g_x, g_y)$位置所需的最少步数。如果不可能达到目标,报告此事实。

约束

  • $1\leq H \leq 10^9$
  • $1\leq W \leq 10^9$
  • $1\leq N \leq 10^5$
  • $1\leq s_x,g_x\leq H$
  • $1\leq s_y,g_y\leq W$
  • $1\leq X_i \leq H$
  • $1\leq Y_i \leq W$
  • $(s_x,s_y)\neq (g_x,g_y)$
  • $(s_x,s_y)\neq (X_i,Y_i)$
  • $(g_x,g_y)\neq (X_i,Y_i)$
  • 如果$i\neq j$,则$(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

输出

打印出到达$(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

在图中,$(s_x,s_y)$以S表示,$(g_x,g_y)$以G表示。
通过移动$(3,4)\rightarrow(2,4) \rightarrow(2,2) \rightarrow(5,2) \rightarrow(5,6)$,他可以在$4$个步骤内到达$(g_x,g_y)$位置。


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

他必须停在$(g_x,g_y)$处。
注意,只是经过$(g_x,g_y)$不被视为达到目标。


1 10 1
1 5
1 1
1 7
-1


如果他选择向左移动,高桥将在经过$(g_x,g_y)$后掉下悬崖。
注意,由于滑冰场四周被悬崖包围,禁止开始一个永远不会撞到障碍物的移动。