#P649. 树的连通块(一)

树的连通块(一)

题目描述

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

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

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

输入格式

  • 第一行:单个整数表示 nn
  • 第二行:n1n-1 个整数表示 p2p_2pnp_npip_i 表示 ii 号点父亲的编号,保证有 1pi<i1\leq p_i<i
  • 第三行:nn 个整数表示 a1a_1ana_naia_i 表示 ii 号点的权值

输出格式

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

样例解释 1

10+20-30+40+60=100

数据范围

  • 对于 30%30\% 的数据, n200n\leq 200
  • 对于 60%60\% 的数据, n5000n\leq 5000
  • 对于 100%100\% 的数据, 1n200,0001\leq n\leq 200,000
  • 1,000,000,000ai1,000,000,000-1,000,000,000\leq a_i\leq 1,000,000,000