sol

[例题]走廊泼水节

设当前扫描到边x,y,长度为z,x所处的并查集为Sx,y所处的并查集为Sy

对于任意u属于Sx,v属于Sy,我们可以知道u,v之间必连一条边

但是我们要在保证x,y之间的边属于唯一最小生成树的情况下令u,v之间连边的边权最大,直接设为z+1

那么我们可以知道,增加的边权和为(z+1)*(|Sx|*|Sy|-1) ;

算法时间复杂度为O(NlogNα(N))

(α(N)是并查集的时间复杂度)

[例题]黑暗城堡

求图的最短路径生成树

预处理1号节点最短路,把所有节点按dist排序

使用Prim算法的思想,维护一个最路径生成树T

那么考虑现在正在加入节点p,

我们遍历T找点X满足dist[p] = edge[p][x] +dist[x],统计这样的节点的个数Ans,根据乘法原理,直接乘起来即可

Warning!

本文由 TYQ 创作,采用 知识共享署名 4.0 国际许可协议进行许可。
转载要与作者联系,并需在正文明显处署名作者且注明文章出处。
对了,我永远喜欢C++啊。

原文地址:https://www.cnblogs.com/tyqtyq/p/9769561.html