题目描述
给定包含 n 个结点 m 条边的带权无向图 G,结点依次以 1,2,…,n 编号。第 i(1≤i≤m)条边连接编号为 ui 与 vi 的两个结点,权值为 wi。
对于指定的 1≤ℓ≤r≤n,按以下方式构造图 G 的子图 G(ℓ,r):
- 保留 G 中编号在区间 [ℓ,r] 中的结点。删去其它编号不在 [ℓ,r] 中的结点以及与之相连的边。剩余的结点和边构成子图 G(ℓ,r)。
对于 G(ℓ,r) 中的任意结点 u,v 应有 ℓ≤u,v≤r。记 u,v 在子图 G(ℓ,r) 上的最短距离为 d(ℓ,r,u,v)。特殊地,若 u,v 在子图 G(ℓ,r) 上不连通,则认为 d(ℓ,r,u,v)=0。
你需要求出 ∑ℓ=1n∑r=ℓn∑u=ℓr∑v=urd(ℓ,r,u,v) 对 109 取模的结果。
- 题目中的英文字母 l 使用了特殊写法 ℓ,以避免英文字母 l 与数字 1 混淆。
输入格式
第一行,两个正整数 n,m,表示结点数与边数。
接下来 m 行,第 i(1≤i≤m)行包含三个正整数 ui,vi,wi,表示一条连接结点 ui,vi 的权值为 wi 的边。
输出格式
输出一行,一个整数,表示 ∑ℓ=1n∑r=ℓn∑u=ℓr∑v=urd(ℓ,r,u,v) 对 109 取模的结果。
输入样例 1
13 221 2 132 3 2
输出样例 1
19
输入样例 2
14 621 2 10032 3 10043 4 10051 3 1062 4 1071 4 1
输出样例 2
1784
数据范围
对于 40% 的测试点,保证 2≤n≤20。
对于所有测试点,保证 2≤n≤100,2≤m≤2n(n−1),1≤ui,vi≤n,1≤wi≤106。图中可能存在重边。