[GESP202603 八级] 子图最短路

普及+/提高 gesp 八级 图论 最短路

题目描述

给定包含 n 个结点、m 条边的带权无向图 G,结点依次以 1, 2, ..., n 编号。第 i1 <= i <= m)条边连接编号为 u[i]v[i] 的两个结点,权值为 w[i]

对于指定的 l, r,按以下方式构造图 G 的子图 G(l, r)

  • 保留 G 中编号在区间 [l, r] 中的结点;
  • 删去其它编号不在 [l, r] 中的结点以及与之相连的边;
  • 剩余的结点和边构成子图 G(l, r)

对于 G(l, r) 中的任意结点 u, v,应有 l <= u, v <= r。记 u, v 在子图 G(l, r) 上的最短距离为 d(l, r, u, v)。特殊地,若 u, v 在子图 G(l, r) 上不连通,则认为 d(l, r, u, v) = 10^9

你需要求出

sum_(l=1..n) sum_(r=l..n) sum_(u=l..r) sum_(v=u..r) d(l, r, u, v)

10^9 取模的结果。

输入格式

第一行,两个正整数 n, m,表示结点数与边数。

接下来 m 行,第 i1 <= i <= m)行包含三个正整数 u[i], v[i], w[i],表示一条连接结点 u[i], v[i] 的权值为 w[i] 的边。

输出格式

输出一行,一个整数,表示上述求和式对 10^9 取模的结果。

数据范围

  • 对于 40% 的测试点,保证 2 <= n <= 20
  • 对于所有测试点,保证 2 <= n <= 1002 <= m <= n(n-1)/21 <= u[i], v[i] <= n1 <= w[i] <= 10^6
  • 图中可能存在重边

样例输入 1

3 2
1 2 1
2 3 2

样例输出 1

9

样例输入 2

4 6
1 2 100
2 3 100
3 4 100
1 3 10
2 4 10
1 4 1

样例输出 2

784
时间限制: 1000ms
内存限制: 512MB
通过率: 0.0%
提交数: 0

设置

导航栏小工具

时钟
显示实时时钟(默认组件)
📝
代码粘贴板
快速创建和分享代码片段