#GESP6029. 路径覆盖

路径覆盖

题目描述

给定一棵有 nn 结点的有根树 TT,结点依次以 1,2,…,n1,2,\ldots,n 编号,根结点编号为 11。方便起见,编号为 ii 的结点称为结点 ii。

初始时 TT 中的结点均为白色。你需要将 TT 中的若干个结点染为黑色,使得所有叶子到根的路径上至少有一个黑色结点。将结点 ii 染为黑色需要代价 cic_i,你需要在满足以上条件的情况下,最小化染色代价之和。

叶子是指 TT 中没有子结点的结点。

输入格式

第一行,一个正整数 nn,表示结点数量。

第二行,n−1n-1 个正整数 f2,f3,…,fnf_2,f_3,\ldots,f_n,其中 fif_i 表示结点 ii 的父结点的编号,保证 fi<if_i<i。

第三行,nn 个正整数 c1,c2,…,cnc_1,c_2,\ldots,c_n,其中 cic_i 表示将结点 ii 染为黑色所需的代价。

输出格式

一行,一个整数,表示在满足所有叶子到根的路径上至少有一个黑色结点的前提下,染色代价之和的最小值。

样例 #1

样例输入 #1

4
1 2 3
5 6 2 3

样例输出 #1

2

样例 #2

样例输入 #2

7
1 1 2 2 3 3
64 16 15 4 3 2 1

样例输出 #2

10

提示

【样例解释 2】

叶子是结点 4,5,6,74,5,6,7。

  • 结点 22 的子树里有叶子 4,54,5:全部染黑要 c4+c5=4+3=7c_4+c_5=4+3=7,直接染黑结点 22 要 1616,取 77;
  • 结点 33 的子树里有叶子 6,76,7:全部染黑要 2+1=32+1=3,直接染黑结点 33 要 1515,取 33;
  • 根结点 11:分别处理两棵子树要 7+3=107+3=10,直接染黑自己要 6464,取 1010。

所以最小代价是 1010。

【数据范围】

对于 40%40\% 的测试点,保证 2≤n≤162\le n\le 16。

对于另外 20%20\% 的测试点,保证 fi=i−1f_i=i-1。

对于所有测试点,保证 2≤n≤1052\le n\le 10^5,1≤ci≤1091\le c_i\le 10^9。