题意:
给定有 n n n个节点的树和 m m m条链(链连接两个顶点,且有权值),要求选出一部分链,使连接以后图的每个圈没有公共节点,问能够选出的链的权值和最大为多少?
考虑树形DP。
对于当前顶点 u u u,假设 d p [ u ] dp[u] dp[u]为以 u u u为根节点的子树所能够达到的最大目标值。
另外定义:
1. w w w为当前考虑的链权值。
2. s u m [ u ] = ∑ d p [ k ] sum[u] = \sum dp[k] sum[u]=∑dp[k]( k k k为 u u u的子节点)。
则分两种情况考虑:
一是存在某一条链,所连接形成的圈经过 u u u,且 u u u为链上两点的 L C A LCA LCA则:
d p [ u ] = w + ∑ d p [ k ] dp[u] = w + \sum dp[k] dp[u]=w+∑dp[k]( k k k为圈上节点的子节点)
画图后容易发现:
d p [ u ] = w + ∑ d p [ k ] = w + ∑ s u m [ x ] − ∑ d p [ x ] dp[u] = w + \sum dp[k] = w + \sum sum[x] - \sum dp[x] dp[u]=w+∑dp[k]=w+∑sum[x]−∑dp[