题意
给一棵树,现在可以把节点之间两两配对,问有多少种配对方案满足每一条边都至少在某一对节点的最短路径上。
n≤5000n\le5000n≤5000
分析
很容易想到树形dp:设fi,jf_{i,j}fi,j表示以i为根的树中,还有j个点没有配对的方案。这样做显然是O(n3)O(n^3)O(n3)的,然后又发现没办法优化,于是就只能另寻出路。
考虑容斥,我们可以枚举有哪些边一定没有被覆盖,那么容斥系数就是(−1)枚举的边数(-1)^{枚举的边数}(−1)枚举的边数,方案就是将这些边去掉后,每个连通块内的点随意配对的方案。
那么我们就可以树形dp了。
设fi,jf_{i,j}fi,j