matrix-tree 简记
仅证明根向有根树的情况, 其他情况易于推广
考虑一个类似子集容斥的思路,
设 \(cir(x)\) 表示钦定 \(x\) 个圈的方案数 .(保证除了根每个点均有一条出边)
所求(的生成树个数)即为 \(\sum\limits_{i=0}^{n}(-1)^{i}cir(i)\).
下面证明(去掉根行根列后) \(|out(D)-A|\) 即为所求
其中 \(A\) 是原图的邻接矩阵, \(out(D)\) 是原图的出度矩阵.
\(out(D)\) 满足 \(D_{i,i}\) 为从 \(i\) 点出发的所有边边权之和, 其余位置为 \(0\) .
首先根必不会向任何点连边, 因此直接去掉 .
根据行列式的定义(全排列定义)
\(\det(M)=\sum\limits_{p,p\ is\ perm}(-1)^{\pi(p)}\prod M_{i,p_i}\)
其中 \(\pi(p)\) 表示排列 \(p\) 的逆序对数
考察一个排列 \(i,p_i\)
对于每个点 \(i\), 若 \(i=p_i\), 不妨认为它向任意点连边 .(由 \(out(D)\))
否则不妨认为 \(i\) 向 \(p_i\) 连边 .(由 \(-A\), 注意这里的符号)
\(i\neq p_i\) 的点必然构成若干环 .
考虑此时的贡献, 若环长为 \(k\) .
对于每个奇环考虑 \(-A\) 的符号带来的 \((-1)^k\), 因此其具有 \(-1\) 的系数 .
对于每个偶环考虑 \((-1)^{\pi(p)}\), 因此其具有 \(-1\) 的系数 .
(逆序对的奇偶性 \(=\) \(n\) - 置换环个数 \(=\) 偶环数的奇偶性)
故满足 \(cir(x)\) 的要求, 命题得证 .