#814. 路径覆盖

路径覆盖

题目描述

给定一棵有根树 TT,节点编号为 1,2,,n1,2,\dots,n,根节点为 11。初始时树中所有节点都是白色。你可以把若干节点染成黑色,使得对于每一条从某个叶子到根的路径上至少存在一个黑色节点。

把节点 ii 染成黑色需要代价 cic_i。在满足覆盖所有叶子到根路径的前提下,求染黑节点使总代价最小的最小代价。

叶子定义为树中没有子节点的节点。

输入格式

  • 第一行包含一个整数 nn,表示节点数。
  • 第二行包含 n1n-1 个整数 f2,f3,,fnf_2,f_3,\dots,f_n,其中 fif_i 表示节点 ii 的父节点编号(保证 fi<if_i<i)。
  • 第三行包含 nn 个整数 c1,c2,,cnc_1,c_2,\dots,c_n,其中 cic_i 表示将节点 ii 染为黑色所需的代价。

输出格式

输出一行,一个整数,表示使得每条叶子到根路径上至少有一个黑色节点的最小总代价。

样例输入 1

4
1 2 3
5 6 2 3

样例输出 1

2

样例输入 2

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

样例输出 2

10

说明

数据范围

  • 对于 40%40\% 的测试点,保证 2n162\le n\le 16
  • 对于另外 20%20\% 的测试点,保证 fi=i1f_i=i-1
  • 对于所有测试点,保证 2n1052\le n\le 10^5,且 1ci1091\le c_i\le 10^9