#PD010C. 树上选点 (choose)
树上选点 (choose)
第3题:树上选点 (choose)
- 输入:
choose.in - 输出:
choose.out - 时间限制:
2 s - 内存限制:
512 MB
题目描述
给定一棵大小为 的有根树,树上结点编号从 到 。树根为结点 ,每个点都有一个点权,第 个点的点权为 。
你需要找出若干个点 ,使得:
- 每两个点 互不相邻;
- 每两个点 与树根的距离互不相同;
- 找出的点的点权之和尽可能大。
请输出找到的这些点的点权和的最大值。
输入格式
输入的第一行包含一个整数 。
第二行包含 个整数 ,相邻整数之间使用一个空格分隔,分别表示第 至 个结点的父结点编号(其中 表示结点 的父结点编号)。
第三行包含 个整数 ,相邻整数之间使用一个空格分隔,分别表示每个结点的点权(其中 表示结点 的点权)。
输出格式
输出一行包含一个整数,表示答案。
输入输出样例 #1
输入 #1
5
1 2 3 2
2 1 9 3 5
输出 #1
11
输入输出样例 #2
输入 #2
10
1 1 1 2 2 3 3 4 5
8 7 6 9 5 4 3 2 3 2
输出 #2
15
说明/提示
【数据规模与约定】
对于 的评测用例,
对于所有评测用例,$1 \le n \le 2 \times 10^5,\quad 1 \le F_i < i,\quad 1 \le V_i \le 10^4$