#P12382. [蓝桥杯 2023 省 Python B] 树上选点

[蓝桥杯 2023 省 Python B] 树上选点

题目描述

给定一棵树,树根为 11,每个点的点权为 ViV_i

你需要找出若干个点 PiP_i,使得:

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

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

输入格式

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

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

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

输出格式

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

5
1 2 3 2
2 1 9 3 5
11

提示

评测用例规模与约定

  • 对于 40%40\% 的评测用例,n5000n \leq 5000
  • 对于所有评测用例,1n2×1051 \leq n \leq 2 \times 10^51Fi<i1 \leq F_i < i1Vi1041 \leq V_i \leq 10^4