PA 2022 Drzewa rozpinające

· · 题解

PA 2022 Drzewa rozpinające

根据 Matrix-tree 定理,我们要计算 (n-1)\times (n-1) 的矩阵的 \det. 设 G_{i,j} = \gcd(a_i,a_j),D_{i,i}=\sum_j G_{i,j},要计算 \det(D-G).

由于 \gcd(a_i,a_j)=\sum_{d|a_i,d|a_j}\varphi(d),设两个 (n-1)\times m 的矩阵 U,VU_{i,d}=\varphi(d)[d|a_i],V_{i,d}=[d|a_i],则有 G=UV^T. (V^T 是转置矩阵)

下面考虑使用 Matrix determinant lemma 化简式子。

$D$ 是对角矩阵,$\det$ 好算。于是问题转化为计算 $\det(I_m-V^TD^{-1}U)$. 设 $Q=I_m-V^TD^{-1}U$,只有 $\operatorname{lcm}(i,j)\le m$ 的地方可能有值,对这个稀疏矩阵高斯消元,跑的比较快。