题意
给一个 n n n个点 m m m条边的简单无向图,定义一棵生成树的权值为其边权和与边权 gcd \gcd gcd的乘积。求所有生成树的权值和。
n ≤ 30 , w i ≤ 152501 n\le 30,w_i\le 152501 n≤30,wi≤152501
分析
将 gcd \gcd gcd拆成欧拉函数求和的形式,得到 a n s = ∑ w φ ( w ) ∗ [ 所 有 边 权 都 是 w 倍 数 的 生 成 树 权 值 和 ] ans=\sum_w\varphi(w)*[所有边权都是w倍数的生成树权值和] ans=w∑φ(w)∗[所有边权都是w倍数的生成树权值和]
问题转化为如何求所有生成树的权值和。
最暴力的方法是枚举一条边,强制这条边在生成树中,然后把基尔霍夫矩阵中这条边所在的行和列删掉,对剩下的 n − 1 n-1 n−1阶子式求行列式,再乘上该边的边权,求和就是答案。那么我们可以把一条边的边权看做多项式 1 + w i x 1+w_ix 1+wix,然后求得行列式的一次项系数就是答案。因为若在行列式中选取 w i x w_ix wi