矩阵树定理学习笔记
1 模板
1.1 定理内容
一张图的生成树个数即为其基尔霍夫矩阵的行列式。
1.2 行列式
1.3 无向图
\(A[i][i]\):点 \(i\) 的点度。
\(B[i][j]\):连接 \(i,j\) 的边数。
基尔霍夫矩阵即为 \(A-B\)。
1.4 有向图
1.4.1 外向树(从 \(1\) 向别的点连)
\(A[i][i]\):点 \(i\) 的入度。
\(B[i][j]\):连接 \(i,j\) 的边数。
基尔霍夫矩阵即为 \(A-B\)。
1.4.2 内向树(从别的点向 \(1\) 连)
\(A[i][i]\):点 \(i\) 的出度。
\(B[i][j]\):连接 \(i,j\) 的边数。
基尔霍夫矩阵即为 \(A-B\)。
2 练习
2.1 [FJOI2007]轮状病毒
练习 python。
2.2 【模板】Matrix-Tree 定理
模板题。
2.3 [SHOI2016]黑暗前的幻想乡
模板题II。
暴力枚举公司的子集计算方案然后容斥即可。
2.4 [SDOI2014]重建
数学题。
注意到每棵树的贡献是 \(\prod\limits_{i\in\text{tree}}p_i\prod\limits_{i\not\in\text{tree}}(1-p_i)\)
我们把每一项除以 \(\prod\limits_i(1-p_i)\)。
然后每棵树的贡献就是 \(\prod\limits_i(1-p_i)\prod\limits_{i\in\text{tree}}\frac{p_i}{1-p_i}\)
然后就做完了。