题解:P10928 走廊泼水节

· · 题解

回顾 kruskal:

取边权最小的一条边,若两个点在不同连通块(并查集),则连边合并。

我们把以上规则改一下:

如果点 A 的老大的小弟数<点 B 的老大的小弟数,A 成为 B 小弟。

反之,B 成为 A 小弟。

我们定义 s_i 是点 i 的老大的小弟数,wab 的边权。

贡献和为:(s_A×s_B−1) \times (w+1)

代码楼上楼下都已经写的很明白了,我就不在赘述了。