頭ン痛 - feat. 重音テト
我没找到 QaQ
prufer 序列,简单来说就是 \(n\) 个节点的树双射一个长度 \(n-2\) 值域 \([1,n]\) 的序列。
构造过程就是每次删一个编号最小叶子,记录其父节点。
本图来自baoziwu2,侵删
显然堆 \(n\log n\) 可做,也可以扫一遍所有标号,对于已经删除的父节点,判断其度数和标号是否该选,分讨可做 \(O(n)\)
然后有定理:
\(k\) 个点完全图有 \(k^{k-2}\) 棵生成树。
\(n\) 个点的图有 \(k\) 个联通块,第 \(i\) 个联通块点数为 \(s_i\) ,添加 \(k-1\) 条边使其联通,有 \(n^{k-2}\times \prod\limits_{i=1}^ks_i\) 种方案。
证明可以考虑缩点后为生成树,考虑每个联通块内的点个数,可以得到。
例题 P6596 How Many of Them
简要题解
首先将至多容斥成至少,然后考虑可以先求出有 \(m+1\) 个连通块的个数,可以 dp,在加 \(m\) 条边联通,乘上 \(n^{k-2}\times \prod\limits_{i=1}^ks_i\) 即可。
直接 \(DP\) 是 \(n^3\),可以用多项式优化到 \(n^2\log n\),但我不会