题意:一颗n个个节点的树,有n-1条边,pi为i节点与pi节点相连,每个节点有个权值,但现在只知道根节点的权值和奇数层节点到根节点的所经过的点的权值之和,偶数层到根节点的和未知,标位-1,让你求出所有点的权值之和最小的值,不能求出,输出-1.

思路:通过样例我们可以发现当偶数层为它的子节点中的最小值的时候,结果是最小的,因为当该节点在小一点的时候它的所有子节点的值都要加上它小的那些值,而为偶数层的叶子节点我们直接赋值为零就行了,两遍dfs,第一遍把偶数层的s值求出来,第二遍把他们的实际权值求出来,注意有不合法情况,即该节点小于它的父亲节点的情况.

Sum in the tree

相关文章: