AT_apc001_i.Simple APSP Problem
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个 H×W 的网格。我们将左上角的格子记作 (0, 0),右下角的格子记作 (H−1, W−1)。
在这些格子中,有 N 个格子 (x1, y1), (x2, y2), ..., (xN, yN) 被涂成黑色,其余格子为白色。
对白色格子 A 与 B,定义它们之间的最短距离为:仅通过白色格子从 A 走到 B 所需要移动的最小步数。每一步只能移动到上下左右相邻的格子。
由于白色格子共有 H×W−N 个,所以可以从中任选两个格子的方案数为 (H×W−N)C2。
请对于所有 (H×W−N)C2 种选取的方式,分别求出选中两格之间的最短距离,将所有距离加和并对 1,000,000,007=109+7 取余。
输入格式
输入通过标准输入依下述格式给出。
H W N x1 y1 x2 y2 : xN yN
输出格式
输出最短距离总和对 109+7 取余后的值。
输入输出样例
输入#1
2 3 1 1 1
输出#1
20
输入#2
2 3 1 1 2
输出#2
16
输入#3
3 3 1 1 1
输出#3
64
输入#4
4 4 4 0 1 1 1 2 1 2 2
输出#4
268
输入#5
1000000 1000000 1 0 0
输出#5
333211937
说明/提示
约束条件
- 1≤H,W≤106
- 1≤N≤30
- 0≤xi≤H−1
- 0≤yi≤W−1
- 当 i=j 时,xi=xj 或 yi=yj
- 至少存在一个白色格子
- 任意两个白色格子 A,B 之间,仅通过白色格子可互相到达
样例说明 1
该网格的色彩分布如下(. :白色,# :黑色):
...
.#.
此时,给白格编号如下所示:
ABC
D#E
则有:
- dist(A, B) = 1
- dist(A, C) = 2
- dist(A, D) = 1
- dist(A, E) = 3
- dist(B, C) = 1
- dist(B, D) = 2
- dist(B, E) = 2
- dist(C, D) = 3
- dist(C, E) = 1
- dist(D, E) = 4
这些距离的总和为 20。其中,dist(A, B) 表示格子 A 和 B 之间的最短距离。
样例说明 2
给白格编号如下:
ABC
DE#
则有:
- dist(A, B) = 1
- dist(A, C) = 2
- dist(A, D) = 1
- dist(A, E) = 2
- dist(B, C) = 1
- dist(B, D) = 2
- dist(B, E) = 1
- dist(C, D) = 3
- dist(C, E) = 2
- dist(D, E) = 1
这些距离的总和为 16。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?