矩阵树定理

一个用来求一张图的生成树个数的方法。

基础结论

在无向图中,定义一个点的度数为 di,边 (u,v) 的数量为 cu,v
在有向图中,定义一个点的入度为 indi,出度为 outdi,边 uv 的数量为 tu,v

先把结论扔出来:

求无向图生成树:
记矩阵 M=(mij)n×n,其中 mij={di,i=jci,j,ij
则删去这个矩阵第 i 行和第 i 列,得到的矩阵 M 的行列式即为原图的生成树数。

求有向图外向树:
记矩阵 Mout=(mij)n×n,其中 mij={indi,i=jti,j,ij
则删去这个矩阵第 i 行和第 i 列,得到的矩阵 M 的行列式即为原图以 i 为根的外向生成树数。

求有向图内向树:
记矩阵 Mout=(mij)n×n,其中 mij={outdi,i=jti,j,ij
则删去这个矩阵第 i 行和第 i 列,得到的矩阵 M 的行列式即为原图以 i 为根的内向生成树数。

证明就不在这里给出。

有了这个结论,我们就可以解决很多问题了:
Luogu P6178 【模板】Matrix-Tree 定理
[HEOI2015] 小 Z 的房间
[CQOI2018] 社交网络
[SHOI2016] 黑暗前的幻想乡

拓展延伸

其实对于对于树计数可以不是单纯的单个树求乘积,所有树求加和,也就是我们求的是 TeTw(e)

然而内部不一定得是数乘,只要满足 <W,+,×> 构成环即可,比如可以是FWT等卷积。

[THUPC2019] 找树

考虑统计每一种可能结果的数量,找到其中值非零且最大的即可。
每一位按照它的运算方式使用对应的 FWT 方式即可,复杂度 O(n32w)

posted @   Xun_Xiaoyao  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示