线性代数 删边计数
问题描述
给你一个由n个点m条边构成的无向图。要你从图中删除m-n条边,使得剩下的图示连通的。
问总共有多少种删边方案?
输入格式
第一行,两个整数n,m
接下来m行,每行两个整数x和y,表示点x与点y之间有边相连。
图中没有自环,也没有重边。
输出格式
输出一个整数,表示答案,答案可能很大,mod 998244353再输出。
数据范围
$1\leq n\leq 16,n\leq m\leq \frac{n(n-1)}{2}$
首先意识到最后的图一定是一个基环树,如果把环缩成一个点就可以套用矩阵树定理计数了。自然的想法就是枚举这个环。需要注意双连通分量的算法是行不通的——并没有找出所有环;仅枚举成环的点集也是不行的——不同形态的环是不同的,不能简单用集合计数。
因此考虑这样设计状压DP:设$f[s][p]$是以$p$为终点,以集合$s$中编号最小的点(即二进制状态的lowbit)作为起点,经过集合$s$中所有点恰一次的简单路径条数。这样做的话转移比较显然,而且保证了每个环仅被计算两次——枚举环时判断简单路径两端是否有边相连,那么一个环会在与起点相邻的两个点作为终点时被算到。所以最后不要忘了把答案乘上2的逆元。
1 |
|