[kuangbin带你飞]专题八 生成树 题解汇总

本来准备省赛和其他的比赛先不打算做kuangbin专题了,不过我朋友AK了最小生成树专题,问我继续怎么练。既然都练了最小生成树,不如把后面的那个生成树专题也啃了吧。然后clone生成树专题,花了5天怼完。主要是中间一堆作业要怼,耽误了很多时间。

我把我的题解和代码都放到了GitHub上了,有兴趣的同学可以去看看哇!

链接:生成树专题 题解和代码


前四题都是求次小生成树,没啥难度。基于kruskal算法的思路比较简单,先求最小生成树,标记树上的边,然后枚举N-1条标记的边,逐个删去。看是否能求得原先的最小生成树的值,能说明次小生成树的值与最小生成树相等。

基于prim算法的改进思路比较优秀,算法时间复杂度O(N^2) 网上很多博客都有讲述,我就不陈述了,贴一个好的链接。

求次小生成树


后四题跟最小树形图有关,最小树形图其实就是有向图的最小生成树。 指定一个结点为根结点,求一个生成树,使得根可以到达所有的结点,而且树的边权总和最小。 算法是朱刘算法,作为一个中国人非常自豪这是国人的专利!!!

E题和F题都是模板题,就是练练模板,没多大用处。

其中G题是个好题,最小树形图+虚根。虚根和所有结点连边,边权为 已有所有边权和+1。

H题也是个要加虚根的题目,不过这个思路比较明显,简单题。


后面的题目都是生成树计数题目,用到了Matrix_Tree定理。额,这可能就是智商的差异了吧,至少我没完全搞懂那证明,码农码农,只会利用结论了。

构成出拉普拉斯矩阵矩阵后,求任意一个N-1阶余子式的行列式的值,这就是答案了。

自环对生成树数目无影响,所以建边忽略掉。不管是否有重边,Matrix_Tree定理都是适用的。

我在GitHub放了一个证明的pdf,有兴趣的同学可以去看看,英文版的。

题目都那个套路,构建好矩阵后就是简单的求解行列式,用到高斯消元法。


最后附上一个截图,记录这几天的成就哈哈哈哈


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值