#Tree17. 树上最优匹配
树上最优匹配
练习 8:树上最优匹配
题目描述:
给定一棵以 1 为根的有根树,每个结点有一个权值 w[i]。现在要将树中的结点两两配对(每个结点最多配对一次),如果结点 u 和 v 配对,则获得收益 w[u] * w[v]。
问:最多能获得多少总收益?
输入格式:
- 第一行:一个正整数
n(2 ≤ n ≤ 1000,保证n为偶数) - 第二行:
n-1个正整数f_2, f_3, ..., f_n,其中f_i表示结点i的父结点编号 - 第三行:
n个正整数w[1], w[2], ..., w[n](1 ≤ w[i] ≤ 100)
输出格式:
- 一行,一个整数,表示最大总收益
样例输入:
4
1 1 2
2 3 4 5
样例输出:
23
提示:
- 贪心策略:在每棵子树内,尽量让权值大的结点配对
- 树形 DP:
dp[u][0]表示u不配对时,u子树的最大收益 dp[u][1]表示u已配对时,u子树的最大收益- 转移时考虑:
u和哪个子结点配对收益最大