#28468. Tree Shuffling
Tree Shuffling
题目描述
Ashish 有一棵包含 个节点的树,节点编号为 到 ,以节点 为根。树中第 个节点有一个代价 ,并且写有一个二进制数字 。他希望最终每个节点 上写有目标二进制数字 。
为此,他可以进行如下操作任意次:
- 从任意节点 的子树中选择任意 个节点,并随意打乱这 个节点上的数字,操作的代价为 。其中 可以从 到 的子树大小任意选择。
他希望通过若干次操作,使得每个节点最终都拥有其目标数字。
请你帮助他计算使所有节点达到目标数字所需的最小总代价,或者判断是否无法实现。
输入格式
第一行包含一个整数 ,表示树的节点数。
接下来 行,每行包含三个用空格分隔的整数 、、 ,分别表示第 个节点的代价、初始数字和目标数字。
接下来 行,每行包含两个整数 、 ,表示树中存在一条连接节点 和 的边。
输出格式
输出使所有节点达到目标数字所需的最小总代价。如果无法实现,输出 。
5
1 0 1
20 1 0
300 0 1
4000 0 0
50000 1 0
1 2
2 3
2 4
1 5
4
5
10000 0 1
2000 1 0
300 0 1
40 0 0
1 1 0
1 2
2 3
2 4
1 5
24000
2
109 0 1
205 0 1
1 2
-1
说明/提示
样例 和 所对应的树如下:

在样例 中,我们可以选择节点 ,,总代价为 ,选择节点 ,打乱它们的数字后即可得到所有节点的目标数字。
在样例 中,我们可以选择节点 ,,总代价为 ,选择节点 ,交换它们的数字;同理,选择节点 ,,总代价为 ,选择节点 ,交换它们的数字,最终所有节点都能达到目标数字。
在样例 中,无法得到目标数字,因为初始状态下没有任何节点上写有数字 。