Kruskal重构树学习笔记
1.定义:
采用类似Kruskal的方法,解决的问题:
求一张图上最小生成树上两点(u,v)上的最大边的边权
或者是最大生成树上两点(u,v)上最小边的边权!
1.是一个小/大根堆(由建树时边权的排序方式决定)
2.LCA(u,v)的权值是 原图 u到v路径上最大/小边权的最小/大值(由建树时边权的排序方式决定)
2.具体做法:
1)先将所有的边按照一定的规则排好序,跑一个类似于Kruskal算法的过程
对于一条边的两点(u,v),若他们不在同一个并查集内,我们新定义一个节点node.
规定node的点权为这条边的权值
找出u,v各自的并查集根节点ui,vi,并且将ui,vi分别与node连边!
然后让ui,vi的父亲为node
学习blog
https://blog.csdn.net/niiick/article/details/81952126
https://www.cnblogs.com/zwfymqz/p/9349471.html
https://blog.csdn.net/ouqingliang/article/details/81206050
例题:
NOIP 货车运输
NOI 规程
BZOI Network

浙公网安备 33010602011771号