Description
给你一棵树,n个点,n-1条边,每条边有个一个权值\(w_i\), 你需要选择一些边,使这些边权值尽可能大,并且每个点的度数最大为\(d_i\)。
Format
Input
第一行一个\(n\).
接下来一行n个数,\(d_i\)。
接下来n-1行,每行三个数\(u_i,v_i,w_i\)
Output
符合条件的最大权值和。
Samples
7
1 2 1 0 2 1 1
1 2 8
2 3 9
2 4 10
2 5 -3
5 6 8
5 7 3
28
20
0 2 0 1 2 1 0 0 3 0 1 1 1 1 0 0 3 0 1 2
4 9 583
4 6 -431
5 9 325
17 6 131
17 2 -520
2 16 696
5 7 662
17 15 845
7 8 307
13 7 849
9 19 242
20 6 909
7 11 -775
17 18 557
14 20 95
18 10 646
4 3 -168
1 3 -917
11 12 30
2184
Limitation
1s, 1024KiB for each test case.
贪心的想一下,每个节点连接的边,选择最大的前\(k_i\)条肯定是最好的,但是会出现冲突的情况,就是父子最大边冲突的情况,会影响的边只会父子之间的连边,所以我们把这样的连边单独拿出来考虑。
设\(f[i][0/1]\)分别表示以i号为根选不选父亲那条的边的答案,同时要把i最大的\(f[son][0/1]\) 放在一起排序,选前k-1个或者前k个。
浙公网安备 33010602011771号