#P13827. [apc001]Simple APSP Problem
[apc001]Simple APSP Problem
题目描述
给定一个 的网格。我们将左上角的格子记作 ,右下角的格子记作 。
在这些格子中,有 个格子 被涂成黑色,其余格子为白色。
对白色格子 与 ,定义它们之间的最短距离为:仅通过白色格子从 走到 所需要移动的最小步数。每一步只能移动到上下左右相邻的格子。
由于白色格子共有 个,所以可以从中任选两个格子的方案数为 。
请对于所有 种选取的方式,分别求出选中两格之间的最短距离,将所有距离加和并对 取余。
输入格式
输入通过标准输入依下述格式给出。
输出格式
输出最短距离总和对 取余后的值。
输入输出样例 #1
输入 #1
2 3
1
1 1
输出 #1
20
输入输出样例 #2
输入 #2
2 3
1
1 2
输出 #2
16
输入输出样例 #3
输入 #3
3 3
1
1 1
输出 #3
64
输入输出样例 #4
输入 #4
4 4
4
0 1
1 1
2 1
2 2
输出 #4
268
输入输出样例 #5
输入 #5
1000000 1000000
1
0 0
输出 #5
333211937
说明/提示
约束条件
- 当 时, 或
- 至少存在一个白色格子
- 任意两个白色格子 之间,仅通过白色格子可互相到达
样例说明 1
该网格的色彩分布如下(. :白色,# :黑色):
...
.#.
此时,给白格编号如下所示:
ABC
D#E
则有:
- dist(A, B) =
- dist(A, C) =
- dist(A, D) =
- dist(A, E) =
- dist(B, C) =
- dist(B, D) =
- dist(B, E) =
- dist(C, D) =
- dist(C, E) =
- dist(D, E) =
这些距离的总和为 。其中,dist(A, B) 表示格子 A 和 B 之间的最短距离。
样例说明 2
给白格编号如下:
ABC
DE#
则有:
- dist(A, B) =
- dist(A, C) =
- dist(A, D) =
- dist(A, E) =
- dist(B, C) =
- dist(B, D) =
- dist(B, E) =
- dist(C, D) =
- dist(C, E) =
- dist(D, E) =
这些距离的总和为 。