题意简述
给定一颗 \(n\) 个点的树,边有边权。有 \(m\) 个独立的乘客和 \(m\) 个独立的司机,每个人选一个节点。将乘客与司机匹配,使得距离之和最大。
求所有 \(n^{2m}\) 种可能情况的距离之和 \(\bmod 10^9+7\)。
\(1\le n,m\le 2500\)。
题解
考虑一条边的两个端点对应的子树,记其中一半包含 \(a\) 个乘客和 \(b\) 个司机,则这条边最多被算 \(\min(a,m-b)+\min(b,m-a)\) 次,考虑取到这个上界。
将乘客视为源点,司机视为汇点,即需要证明每个点流量平衡。若一个点有 \(A\) 个乘客,\(B\) 个司机,与其相连的所有子树集合为 \(S\),记 \(a_x,b_x\) 为子树 \(x\) 中乘客、司机的数量,则
\[\begin{aligned}
&(A+\sum_{x\in S}\min(a_x,m-b_x))-(B+\sum_{x\in S}\min(b_x,m-a_x))\\
=&(A+\sum_{x\in S}\min(a_x+b_x,m)-b_x)-(B+\sum_{x\in S}\min(a_x+b_x,m)-a_x)\\
=&(A+\sum_{x\in S}a_x)-(B+\sum_{x\in S}b_x)\\
=&0
\end{aligned}
\]
发现 \(\min(a,m-b)+\min(b,m-a)=\min\{a+b,2m-a-b,m\}\),于是直接 \(\mathcal O(nm)\) dp 就做完了。