码迷,mamicode.com
首页 > 其他好文 > 详细

uva 1292

时间:2015-05-28 00:22:06      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

题目大意

给定一棵树,选择尽量少的节点,使得每个没有选中的结点至少和一个已选结点相邻。

 

思路

经典的树形dp题,据说是最小顶点覆盖。

f[u][0]: 表示不选i点,覆盖这个子树的最少点
f[u][1]:选i点,覆盖这个子树的最少点


对于u点,如果选择这个点,那么他的字节点可选也可不选
如果不选u点的话,那么它的子结点就必须要选!开始时我以为字节点只要至少选一个就可以了,但是这样是错的!

因为会出现下面这种情况:

技术分享

顶点1不选,子节点中2有选了,但是3却没有相邻结点有选。


所以可以得到状态转移方程:

f[u][1] = sum{ min{f[v][0], f[v][1]}, v是u的子结点 }
f[u][0] = sum{ f[v][1], v是u的子结点 }

 

uva 1292

标签:

原文地址:http://www.cnblogs.com/water-full/p/4534769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!