题意
一棵树有n个结点,n-1条边,每个结点有个权值。每次可以获得从根节点走到叶子结点所有结点的权值和,但是每个结点的权值只能使用一次。求走k次所能获得的最大权值和。
思路
先进行第一次dfs,求出每条从根到叶子节点的链,然后将这些链排序,在进行第二遍dfs,求出抛去重复走的路径,在一次对所求的结果进行排序,取前m大加起来就行。
代码
1 |
|
一棵树有n个结点,n-1条边,每个结点有个权值。每次可以获得从根节点走到叶子结点所有结点的权值和,但是每个结点的权值只能使用一次。求走k次所能获得的最大权值和。
先进行第一次dfs,求出每条从根到叶子节点的链,然后将这些链排序,在进行第二遍dfs,求出抛去重复走的路径,在一次对所求的结果进行排序,取前m大加起来就行。
1 | #include<bits/stdc++.h> |
微信支付
支付宝