给定一张 n \times m 的网格图,行标号为 1 到 n ,列标号为 1 到 m ,网格图上设置了 k 个障碍。
一个机器人在网格图中行走,初始时它位于位置 s ,每一时刻他有三种行动方式:
初始时机器人可以选择面向任意一个方向。
现在有 q 个询问,每个询问给定一个终点 t_i ,请你求出他从 s 到 t_i 最少需要的转向次数(即行动 2 和 3 的总次数,但初始时选择方向不算做转向),每次选择的初始方向可以不同。
第一行四个整数 n,m,k,q ,表示网格的行数和列数,障碍的个数,以及询问的个数。
接下来 k 行描述障碍,其中第 i 行两个正整数 x_i, y_i ,表示第 x_i 行, y_i 列有一个障碍,保证障碍的位置两两不同。
接下来一行两个正整数 x_s,y_s ,表示起点 s 在第 x_s 行, y_s 列,保证起点处没有障碍。
接下来 q 行描述询问,其中第 i 行两个正整数 {x_t}_i,{y_t}_i ,表示第 i 次询问的终点 t 在第 {x_t}_i 行, {y_t}_i 列,保证终点处没有障碍。
输出共 q 行,每行一个正整数,其中第 i 的数表示第 i 个询问的答案。如果第 i 个询问中从起点 s 无法到达终点 t_i ,则第 i 行输出 -1。
-1
3 4 3 9 1 2 2 1 3 3 3 4 1 1 1 3 1 4 2 2 2 3 2 4 3 1 3 2 3 4
-1 1 0 1 1 0 3 2 0
地图如下(. 表示空地,# 表示障碍,S 表示起点,下同):
.
#
S
.#.. #... ..#S
3 3 0 9 2 2 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3
1 0 1 0 0 0 1 0 1
地图如下:
... .S. ...
5 7 4 6 1 4 1 6 2 5 5 4 1 1 1 5 2 4 2 7 4 1 4 6 5 7
-1 1 2 0 1 2
S..#.#. ....#.. ....... ....... ...#...
对于所有数据, 1 \leq n,m \leq 10^9,0 \leq k \leq 50000,1 \leq q \leq 10^5,1 \leq x_i,x_s,x_{t_i} \leq n,1 \leq y_i,y_s,y_{t_i} \leq m ,保证起点和终点处没有障碍,障碍的位置两两不同。