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

 

 

posted @ 2019-11-11 13:23  会飞的字符串  阅读(153)  评论(0)    收藏  举报