从一个节点A到节点B的最大边缘权重

时间:2018-05-11 13:31:21

标签: algorithm graph-theory disjoint-union

给定具有 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)

示例图

enter image description here

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。

1 个答案:

答案 0 :(得分:2)

我们可以使用Kruskal的MST算法的变体(Kruskal通过增加重量来排序边缘,贪婪地插入不借助于不相交的集合数据结构进行循环的那些) 。将运行总和初始化为零;每当我们合并一个不相交的大小为S1的集合(这个信息可以作为一个不相交的集数据结构的副产品,通过大小联合)和一个不相交的大小为S2的集合,通过权重w,添加S1 * S2 * w和mod 10 ^ 9 + 7。