AT_abc241_f [ABC241F] Skate
题目描述
有一个 H 行 W 列的网格状滑冰场。第 i 行第 j 列的格子用 (i,j) 表示。
滑冰场上有 N 个障碍物,第 i 个障碍物位于 (Xi,Yi)。
高桥君每次移动时,可以选择上下左右任意一个方向,并一直滑行,直到撞到障碍物为止。
撞到障碍物时,会停在障碍物前一个格子。滑冰场四周是悬崖,不能进行不会撞到障碍物的移动。
高桥君一开始在 (sx,sy),他希望通过若干次移动,最终停在 (gx,gy)。
到达 (gx,gy) 至少需要多少次移动?如果无法到达,请输出无法到达的信息。
输入格式
输入以如下格式从标准输入读入。
H W N sx sy gx gy X1 Y1 X2 Y2 ⋮ XN YN
输出格式
输出到达 (gx,gy) 至少需要多少次移动。
如果无法到达,则输出 -1。
输入输出样例 #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
输入输出样例 #2
输入 #2
4 6 2
3 2
3 5
4 5
2 5
输出 #2
-1
输入输出样例 #3
输入 #3
1 10 1
1 5
1 1
1 7
输出 #3
-1
说明/提示
限制条件
- 1≤H≤109
- 1≤W≤109
- 1≤N≤105
- 1≤sx,gx≤H
- 1≤sy,gy≤W
- 1≤Xi≤H
- 1≤Yi≤W
- (sx,sy)=(gx,gy)
- (sx,sy)=(Xi,Yi)
- (gx,gy)=(Xi,Yi)
- 若 i=j,则 (Xi,Yi)=(Xj,Yj)
- 所有输入均为整数
样例解释 1

图中,(sx,sy) 用 S 表示,(gx,gy) 用 G 表示。按照 $(3,4)\rightarrow(2,4)\rightarrow(2,2)\rightarrow(5,2)\rightarrow(5,6)$ 的顺序移动,可以在 4 次移动后到达 (gx,gy)。
样例解释 2

必须停在 (gx,gy)。仅仅经过 (gx,gy) 并不算到达。
样例解释 3

如果选择向左移动,高桥君会经过 (gx,gy) 后掉下悬崖。注意,滑冰场四周是悬崖,不能进行不会撞到障碍物的移动。
由 ChatGPT 4.1 翻译