#P649. 树的连通块(一)

树的连通块(一)

题目描述

给定一棵 nn 个结点的树,11 号点为根。每个点都有一个权值,第 ii 个点的权值为 aia_i,权值有正有负。请在这棵树里找到一个连通块,该连通块内结点的权值之和达到最大,输出这个最大和。

连通块是指树上结点的集合,用树上的边可以将这些点全部连通,且不需要经过块外的点。

在这题里,连通块可以是空集,空集的权值之和定义为 00。

输入格式

  • 第一行:单个整数表示 nn;
  • 第二行:n−1n-1 个整数表示 p2p_2 到 pnp_n,pip_i 表示 ii 号点父亲的编号,保证有 1≤pi<i1\leq p_i<i
  • 第三行:nn 个整数表示 a1a_1 到 ana_n,aia_i 表示 ii 号点的权值

输出格式

  • 单个整数:表示答案。
6
1 1 2 2 3
10 20 -30 40 -50 60
100

样例解释 1

10+20-30+40+60=100

数据范围

  • 对于 30%30\% 的数据, n≤200n\leq 200;
  • 对于 60%60\% 的数据, n≤5000n\leq 5000;
  • 对于 100%100\% 的数据, 1≤n≤200,0001\leq n\leq 200,000
  • −1,000,000,000≤ai≤1,000,000,000-1,000,000,000\leq a_i\leq 1,000,000,000。