#Tree17. 树上最优匹配

树上最优匹配

练习 8:树上最优匹配

题目描述:

给定一棵以 1 为根的有根树,每个结点有一个权值 w[i]。现在要将树中的结点两两配对(每个结点最多配对一次),如果结点 uv 配对,则获得收益 w[u] * w[v]

问:最多能获得多少总收益?

输入格式:

  • 第一行:一个正整数 n2 ≤ 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 和哪个子结点配对收益最大