我有一棵以1为根的树。我可以删除任何节点的整个子树,并且可以执行任何操作。的时间。
假设我们执行了上述操作k no。的时间。我们需要最大化Total_weight-C * k,其中C是一个正常数。
节点的权重可以为正,也可以为负。
对于例如-(1,1)(2,-5)(3,-5)是节点,并且1-2和2-3即1,2和2,3连接。让c为1,因此在这种情况下,我们可以删除2的子树以使权重最大化,这将是1-1 * 1 = 0。
我可以尝试找出每个子树的权重,并删除所有权重小于以1为根的树的权重的子树,但这不是最佳策略。我需要一个O(V)算法。
感谢您对确定最佳算法的任何帮助。
答案 0 :(得分:1)
您可以轻松地递归解决此问题: