#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)$。
- 输入中的所有值都是整数。
输入
从标准输入获得以下格式的输入:
输出
打印出到达$(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)$后掉下悬崖。
注意,由于滑冰场四周被悬崖包围,禁止开始一个永远不会撞到障碍物的移动。