前置芝士——行列式

正题

这个定理用来解决这样一个问题:一张无向图有多少个不同的生成树。

首先需要构造这样一个矩阵:设这个矩阵为 ff,当 iji\neq j 时,f[i][j]f[i][j] 的值为 iijj 之间的边数的相反数,当 i=ji=j 时,f[i][j]f[i][j] 的值为 ii 的度数。

比如有这样一张图(没错有重边也没问题的,但是自环要去掉):

Matrix-Tree矩阵树定理——从入门到入坟
那么矩阵就长这样:
4211241111201102 \left| \begin{matrix} 4 & -2 & -1 & -1\\ -2 & 4 & -1 & -1\\ -1 & -1 & 2 & 0\\ -1 & -1 & 0 & 2\\ \end{matrix} \right|

我们随便去掉其中一个点的影响,即删掉矩阵中的某个第 ii 行第 ii 列,得到一个新的矩阵,然后这个矩阵的行列式就是生成树数量。

证明?我当然不会qwq 这种东西记个结论就好啦~

但是如果暴力求行列式,时间肯定爆炸,于是我们先将它转化为上三角矩阵,然后将主对角线上的元素乘起来就好啦!(具体见上面的有关行列式的博客)

模板题在此

相关文章: