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

Maximum edge weight from one node A to node B

给定具有 N 个节点(1 <= N <= 2 * 10^5)和 N-1条边。让我们定义一个函数 F(a,b),其中 F(a, b) 等于来自 ab。我们如何找到所有 a, b 这样的 F(a, b) 的总和1 <= a, b <= 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。

我们可以为此使用 Kruskal 的 MST 算法的变体(Kruskal 通过增加权重对边进行排序,借助不相交的集合数据结构贪婪地插入不构成循环的边)。将 运行 和初始化为零;每当我们通过权重 w 的边将大小为 S1 的不相交集(此信息可作为按大小并集的不相交集数据结构的副产品提供)与大小为 S2 的不相交集合并时,将 S1*S2*w 添加到总和 mod 10^9 + 7.