编程题
### 问题描述 给定一棵树,树根为 $1$,每个点的点权为 $V_i$。 你需要找出若干个点 $P_i$,使得: 1. 每两个点 $P_x$、$P_y$ 互不相邻; 2. 每两个点 $P_x$、$P_y$ 与树根的距离互不相同; 3. 找出的点的点权之和尽可能大。 请输出找到的这些点的点权和的最大值。 ### 输入格式 输入的第一行包含一个整数 $n$。 第二行包含 $n-1$ 个整数 $F_i$,相邻整数之间使用一个空格分隔,分别表示第 $2$ 至 $n$ 个结点的父结点编号。 第三行包含 $n$ 个整数 $V_i$,相邻整数之间使用一个空格分隔,分别表示每个结点的点权。 ### 输出格式 输出一行包含一个整数表示答案。 ### 样例输入 ```text 5 1 2 3 2 2 1 9 3 5 ``` ### 样例输出 ```text 11 ``` ### 评测用例规模与约定 对于 $40$% 的评测用例,$n \leq 5000$; 对于所有评测用例,$1 \leq n \leq 2 \times 10^5$,$1 \leq F_i < i$,$1 \leq V_i \leq 10^4$。
查看答案
赣ICP备20007335号-2