#LQ1447. 树上选点

树上选点

问题描述

给定一棵树,树根为 11,每个点的点权为 ViV_i。 你需要找出若干个点 PiP_i,使得:

  1. 每两个点 PxP_xPyP_y 互不相邻;
  2. 每两个点 PxP_xPyP_y 与树根的距离互不相同;
  3. 找出的点的点权之和尽可能大。

请输出找到的这些点的点权和的最大值。

输入格式

输入的第一行包含一个整数 nn

第二行包含 n1n-1 个整数 FiF_i,相邻整数之间使用一个空格分隔,分别表示第 22nn 个结点的父结点编号。

第三行包含 nn 个整数 ViV_i,相邻整数之间使用一个空格分隔,分别表示每个结点的点权。

输出格式

输出一行包含一个整数表示答案。

样例

5
1 2 3 2
2 1 9 3 5
11

评测用例规模与约定

对于 40%40\% 的评测用例,n5000n≤5000

对于所有评测用例,1n2×1051≤n≤2×10^51Fi<i1≤F_i<i1Vi1041≤V_i≤10^4