题目: 有一颗树, 删除一条边花费一权值, 添加一条边花费一权值。 问让N个节点构成一个环,最少花费多少权值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714
比赛的时候,思路没正确~~~~悲剧
记录一下思路:
对于有两个以上(包括两个)的分叉,那么就首先与父亲断离,形成一条游离链。 还需要断离 du - 2个儿子, 并且再次连接 du - 2个儿子构成一条直链。这里已经花费了 2 * (du - 2) + 1次操作。 还需要一次操作是与下一个游离链相连。 即 2 * (du - 1) 次操作。
如果该节点就是自定义的根节点, 那么其无需与父亲断离, 也无需与下一个游离链相连。 即需要 2 * (du - 2)次操作。
每次与父亲断离后。 父亲就失去一个儿子节点。
如果该节点只有一个分叉或者是叶子节点, 什么都不管, 返回true. 表示 还是原树一起。
然后再 + 1就会构成一个环。