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

本文分享了一位同学完成生成树专题的经历,详细介绍了基于Kruskal和Prim算法求解次小生成树的方法,并讨论了最小树形图的概念及朱刘算法的应用。此外,还涉及了生成树计数问题及Matrix_Tree定理的使用。

本来准备省赛和其他的比赛先不打算做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,有兴趣的同学可以去看看,英文版的。

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


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


### 关于 kuangbin ACM 算法竞赛培训计划 #### 数论基础专题介绍 “kuangbin专题十四涵盖了数论基础知识的学习,旨在帮助参赛者掌握算法竞赛中常用的数论概念和技术。该系列不仅提供了丰富的理论讲解,还推荐了一本详细的书籍《算法竞赛中的初等数论》,这本书包含了ACM、OI以及MO所需的基础到高级的数论知识点[^1]。 #### 并查集应用实例 在另一个具体的例子中,“kuangbin”的第五个专题聚焦于并查集的应用。通过解决实际问题如病毒感染案例分析来加深理解。在这个场景下,给定一组学生及其所属的不同社团关系图,目标是从这些信息出发找出所有可能被传染的学生数目。此过程涉及到了如何高效管理和查询集合成员之间的连通性问题[^2]。 #### 搜索技巧提升指南 对于简单的搜索题目而言,在为期约两周的时间里完成了这一部分内容的学习;尽管看似容易,但对于更复杂的状况比如状态压缩或是路径重建等问题,则建议进一步加强训练以提高解题能力[^3]。 ```python def find_parent(parent, i): if parent[i] == i: return i return find_parent(parent, parent[i]) def union(parent, rank, x, y): rootX = find_parent(parent, x) rootY = find_parent(parent, y) if rootX != rootY: if rank[rootX] < rank[rootY]: parent[rootX] = rootY elif rank[rootX] > rank[rootY]: parent[rootY] = rootX else : parent[rootY] = rootX rank[rootX] += 1 # Example usage of Union-Find algorithm to solve the virus spread problem. ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值