pku3763 Tour in Wonder Land

题目链接:http://162.105.81.212/JudgeOnline/problem?id=3763

题意简述:给定无向图,求最少添加几条边能使图存在哈密尔顿回路。

解题思路:

树形dp。

我们用dp[i][0]表示遍历路线是从子树的根结点i进入然后走完子树所有点后从某一非根点跳出(或者是从某一非根点进入最后从i点走出,因为是无向图,这两者是等价的),用dp[i][1]表示遍历路线是从非根结点进入,又从非根结点跳出(当然,在过程中要经过i点)。

于是,对于叶子结点有dp[i][0] = dp[i][1] = 0. 对其他点i,设i的儿子数为C,dp[i][0]有两种可能,一种是从i走进某个儿子j,这样走完j的花费是dp[j][0],然后对其他每个儿子k都花费dp[k][1],再加上在C个儿子间跳转的花费C-1;另一种是所有儿子k都走dp[k][1],再加上跳转的花费C。对于dp[i][1],一种可能是选择某两个儿子j,k,走花费dp[j][0]和dp[k][0](也就是经由j,k从根i绕一下),对其他儿子走dp[][1],再加上跳转花费C-2;另一种是所有儿子都走dp[][1],加上C+1的跳转花费(因为要跳到根再跳出来)。注意因为最后要回到1点,所以在总的树根处要再特殊处理一下。

(ps:这题一不小心就跑到第一去了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值