整理的算法模板合集: ACM模板
实际上是一个全新的精炼模板整合计划
目录
一、矩阵树定理
对于无向图 G G G
定义 G G G 的度数矩阵 D D D 满足:
d i j = { deg i i = j 0 i ≠ j d_{i j}=\left\{\begin{array}{rl}\operatorname{deg}_{i} & i=j \\0 & i \neq j\end{array}\right. dij={ degi0i=ji=j
即:矩阵 D D D 是除了对角线以外各个点值都为 0 0 0 的矩阵,D[i][i]
表示 i i i 号点的度数。
定义 G G G 的邻接矩阵 C C C 满足:
c i j = { 0 i = j adj i j i ≠ j c_{i j}=\left\{\begin{array}{rl}0 & i=j \\\text{adj}_{i j} & i \neq j\end{array}\right. cij={ 0adjiji=ji=j
即:矩阵 C C C 记录两点之间的度数,C[i][j]
表示 i i i 号点与 j j j 号点之间的边数
定义 G G G 的基尔霍夫矩阵 L ( G ) = D − C L(G)=D-C L(G)=D−C, 则图 G G G 的生成树数量是 L ( G ) L(G) L(G) 的任意一个代数余子式。
矩阵树定理完整证明(包括下面的常用定理证明):https://www.luogu.com.cn/blog/juruodewo/solution-p6178
二、常用定理
定理 1(矩阵树定理,无向图行列式形式) 对于任意的 i i i,都有
t ( G ) = det L ( G ) ( 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n ) t(G) = \det L(G)\binom{1,2,\cdots,i-1,i+1,\cdots,n}{1,2,\cdots,i-1,i+1,\cdots,n} t(G)=detL(G)(1,2,⋯,i−1,i+1,⋯,n1,2,⋯,i−1,i+1,⋯,n)
其中记号 L ( G ) ( 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n 1 , 2 , ⋯ , i − 1 , i + 1 , ⋯ , n ) \displaystyle L(G)\binom{1,2,\cdots,i-1,i+1,\cdots,n}{1,2,\cdots,i-1,i+1,\cdots,n} L(G)(1,2,⋯,i−1,i+1,⋯,n1,2,⋯,i−1,i