题意见 (link)
Solution
先枚举根为 (mathbf{root})
类似的,我们将 "删边" 视为合并两个点,如果其中存在 (u) 所在的连通块,那么产生 (frac{1}{2}) 的贡献。
设 (f_{u,i}) 表示考虑以 (u) 为根的子树,所有可能的删边序列,仅考虑最后 (i) 条边的情况下的贡献和,答案即 (frac{f_{root,n-1}}{(n-1)!})
考虑计算答案,现加入一条 (u o v) 的边,这样我们需要枚举这条边是第倒数 (j) 条被合并的边,同时考虑转移得到 (f_{u,i})。
- 假定 (jle i),那么我们发现在 (j) 之前合并的边都对答案没有影响,所以有贡献的仅为最后 (j-1) 条边,故 (f_{u,i}leftarrow f_{v,j-1} imes frac{1}{2})
- 假定 (j> i),那么这条边对答案没有贡献,且有贡献的只有最后 (i) 条边,故 (f_{u,i}leftarrow f_{v,i})
我们令 (g_i) 表示只考虑这棵子树时的 (f_{u,i})
现在考虑合并两颗子树的答案,我们只需要枚举最后 (i) 条边来自此子树的边的数量,令 (i'=i+j),那么不难得到:
[f_{u,i'}leftarrow inom{i+j}{i}inom{e_v+e_{bef}}{e_v}g_{i}f_{u,j}'
]
这个部分的复杂度是 (mathcal O(n^2)),预处理 (g_i) 的复杂度可以做到 (mathcal O(n^2)) 的,总体复杂度应该(mathcal O(n^3)) 才对吧。
实现的不好就 (mathcal O(n^4)) 了,具体随便。
u1s1 这个状态真的想不到啊 TAT