考虑dfs,在自底向上的过程中记录子节点的权值和。
1.如果a[u] < s,至少让a[u] == s,所以ans += s - a[u]
2.如果a[u] >= s,那么u不需要增加权值就能满足条件
小红有一棵n个点的树,其中1号点是根。每个点有一个权值ai。如果满足任意节点的权值大于等于其子节点的权值和,那么这棵树就是一棵奇妙树。 小红每次操作可以选择一个点,将其权值加一。请问小红最少需要多少次操作,才能使这棵树变成一棵奇妙树。
第一行一个整数n,表示树的节点数。
第二行n 个整数ai;,表示每个点的权值。
接下来n−1行,每行两个整数u和v,表示u和v之间有一条边。
2≤n≤105
1≤ai≤109
1≤u,v≤n
输出一个整数,表示最少需要多少次操作。
输入
3
1 2 3
1 2
1 3
输出
4
说明
至少需要4次操作,将1号点的权值变为5.