给定具有 N 节点的连通无向图(1 <= N <= 2 * 10 ^ 5)且 N-1 边缘。让我们定义一个函数 F(a,b),其中 F(a,b)等于路径中的最大边权重到 b 。我们如何找到所有 a , b 的 F(a,b)的总和,以便 1 &lt; = a , b &lt; = N (mod 10 ^ 9 + 7)
示例图
F(a,b)等于从a到b的路径中的最大边缘权重。
F(1,2)= 2
F(1,3)= 2
F(1,4)= 4
F(1,5)= 4
F(2,3)= 1
F(2,4)= 4
F(2,5)= 4
F(3,4)= 4
F(3,5)= 4
F(4,5)= 3
所有对的F之和等于32。
答案 0 :(得分:2)
我们可以使用Kruskal的MST算法的变体(Kruskal通过增加重量来排序边缘,贪婪地插入不借助于不相交的集合数据结构进行循环的那些) 。将运行总和初始化为零;每当我们合并一个不相交的大小为S1的集合(这个信息可以作为一个不相交的集数据结构的副产品,通过大小联合)和一个不相交的大小为S2的集合,通过权重w,添加S1 * S2 * w和mod 10 ^ 9 + 7。