3184 问题 D: 蓝桥杯2023年第十四届省赛真题-树上选点

时间限制: 1s 内存限制: 512MB 提交: 711 解决: 137
题目描述

给定一棵树,树根为 1,每个点的点权为 Vi 。 

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

1. 每两个点 Px Py 互不相邻;

2. 每两个点 Px Py 与树根的距离互不相同;

3. 找出的点的点权之和尽可能大。 

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

输入

输入的第一行包含一个整数 n 。 

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

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

输出
输出一行包含一个整数表示答案。 
样例输入
5
1 2 3 2
2 1 9 3 5
样例输出
11
提示

对于40%的评测用例,n ≤ 5000 ; 

对于所有评测用例,1 ≤ n ≤ 2 × 105,1 ≤ Fi < i,1 ≤ Vi ≤ 104 。 

比赛公告

1. 对于编程题目,不能使用诸如绘图、硬件操作或与操作系统相关的 API。

2. 所有依赖的模块(如 math)必须明确地在源文件中 import。

3. 只能使用 python 自带的模块,使用 pip 等安装的扩展模块无法使用。

4. 提交时,注意选择使用Python语言。


比赛结束依旧可以训练,请见题集2022年第十三届蓝桥杯大赛软件类省赛Python大学B组真题