学习
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小A决定要好好学习啦!
小A总共有 n 个学习任务,每个任务有a(难度)b(耗时) 和 c(价值) 三个属性。由于他非常机智并且非常闲,难度和耗时并不能对他造成影响。不过由于学习会越学越累,他每次完成的任务的难度和耗时都不能比上一次完成的大
已知这些学习任务可以抽象成一颗有根树,其中 1 号任务为根节点。因为学习要有系统性,若完成了一个任务后,只能接着完成其子树中的任务
现在小A想使完成的学习任务的价值最大,你能帮帮他吗?

输入描述:

第一行一个数 n 表示学习任务数量,接下来 n 行,每行 3 个正整数 ai,bi,ci,分别表示第 i 个学习任务的难度,耗时和价值。接下来 n-1 行描述了这些学习任务的关系,每行两个正整数 x,y(1≤x,y≤n) ,表示 x 是 y 在树上的父亲。

输出描述:

输出一行一个数表示小A能完成的学习任务的最大价值。
示例1

输入

复制
3
3 3 3
4 4 2
1 1 1
1 2
2 3

输出

复制
4

说明

可以完成的任务集合有 {1,3},{2,3},{1},{2},{3},其中显然完成 1,3 两个任务是最优的。

备注:

对于 10% 的数据 ,n<=10

对于 30% 的数据 ,n<=1000

对于额外 20% 的数据 ,任务构成了一条链,且第 i 个任务的父亲是 i-1

对于额外 10% 的数据 , 所有任务的难度相等

对于 100%的数据 ,n≤105,1≤ai,bi≤109,1≤ci≤104