#B. 迷宫

    Type: Default File IO: maze 2000ms 512MiB

迷宫

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

迷宫(maze\texttt{maze}

【题目描述】

小 D 建造了一个的迷宫,这个迷宫可以看成一个 n×mn\times m 的网格,每个格子是空地或障碍。

小 D 有一些机器人,每个机器人可以在格子之间行走,每一步可以走到和当前格子四联通的空地上(不能出界)。

为了给这些机器人提供电量,小 D 在迷宫中建立了 kk 个充电站,第 ii 个充电站在 (xi,yi)(x_i,y_i)

每个机器人有一个电池,每走一步会消耗 11 的电量,走到充电站后可以把电充满,任何时候电量不能 <0<0,特别地,从充电站出发走到相邻的某个空地不耗电。

小 D 有 qq 个机器人,第 ii 个机器人要从第 sjs_j 个充电站走到第 tjt_j 个充电站,他想请你对于每个机器人求出其电池容量至少是多少,如果无法做到,输出 1-1

【输入格式】

maze.in\texttt{maze.in} 中读入数据。

第一行四个整数 n,m,k,qn,m,k,q

接下来 nn 行,每行一个长度为 mm 的字符串,每个字符都是 .#. 表示当前位置是空地,# 表示当前位置是障碍。

接下来 kk 行,每行两个整数 xi,yix_i,y_i 表示第 ii 个充电站的位置,保证充电站都在空地上。

接下来 qq 行,每行两个整数 sj,tjs_j,t_j 表示第 jj 个机器人的起点和终点,保证起点和终点不相同。

【输出格式】

输出到 maze.out\texttt{maze.out} 中。

输出 qq 行,第 ii 行一个整数 wiw_i 表示机器人 ii 的电池容量最小是多少。

如果无论如何也不能从 sis_i 走到 tit_i,输出 1-1

【样例 1 输入】

5 5 5 2
.....
..##.
.#...
..#..
.....
1 1
4 2
3 3
2 5
3 4
2 4
3 5

【样例 1 输出】

4
0

【样例 1 解释】

从充电站 22 走到充电站 11 再走到充电站 44,电池容量为 44 就足够。

从充电站 33 直接走到充电站 55,电池容量可以为 00

【样例 2 输入】

5 5 3 2
...#.
..#..
#....
.##..
...#.
1 3
5 2
1 5
1 2
1 3

【样例 2 输出】

-1
7

【样例 3】

见下发文件中的 maze3.in\texttt{maze3.in}maze3.ans\texttt{maze3.ans}

该样例满足子任务 11 的限制。

【样例 4】

见下发文件中的 maze4.in\texttt{maze4.in}maze4.ans\texttt{maze4.ans}

该样例满足子任务 44 的限制。

【数据范围】

对于所有测试数据有:$1\le n,m\le 2000,2\le k\le 2\times10^5,1\le q\le 2\times 10^5$。

保证所有位置 (xi,yi)(x_i,y_i) 都是空地,保证所有 sjtjs_j\ne t_j

子任务编号 分值 特殊限制
11 1010 n,m,k200n,m,k\le 200
22 2020 k5000,q=1k\le 5000,q=1
33 3030 k5000,q104k\le5000,q\le 10^4
44 4040 无特殊限制

NOIP2024 模拟赛(四)hard

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2024-8-10 7:50
End at
2024-8-10 12:05
Duration
4.3 hour(s)
Host
Partic.
32