算是个经典题目了,很模板的树形DP题目

做这个题的时候一开始就想到树形DP了,可是由于各种原因没写出来,代码太糟烂了,赛后还是改了好久才过的

dp(u,0)=sum(dp(v,1));

dp(u,1)=sum(min(dp(v,0),dp(v,1)));

#include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std; vector<int> G[100010];
int d[100010][2];
int x,y,n;
int dfs(int u,int fa)
{
d[u][0]=0;
d[u][1]=1;
for(int i=0;i<G[u].size();i++)
{
int v=G[u][i];
if(v==fa)continue;
dfs(v,u);
d[u][0]+=d[v][1];
d[u][1]+=min(d[v][0],d[v][1]);
}
} int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
G[i].clear();
for(int i=0;i<n-1;i++)
{
scanf("%d%d",&x,&y);
G[x-1].push_back(y-1);
G[y-1].push_back(x-1);
}
dfs(0,-1);
printf("%d\n",min(d[0][0],d[0][1]));
return 0;
}

SPOJ 1435 - Vertex Cover(树形DP,树的最小点覆盖)的更多相关文章

  1. SPOJ 1435 Vertex Cover 树形DP

    i 表示节点 i ,j=0表示不选择其父节点,j=1表示选择其父节点.f 为其父节点. 取 每个节点选择/不选择 两者中较小的那个. 一组数据: 151 21 31 41 1010 910 1112 ...

  2. 树形DP 树的最小支配集,最小点覆盖与最大独立集

    最小支配集: 从V中选取尽量少的点组成一个集合,让V中剩余的点都与取出来的点有边相连. (点) 最小点覆盖: 从V中选取尽量少的点组成一个集合V1,让所有边(u,v)中要么u属于V1,要么v属于V1 ...

  3. 树形DP+树状数组 HDU 5877 Weak Pair

    //树形DP+树状数组 HDU 5877 Weak Pair // 思路:用树状数组每次加k/a[i],每个节点ans+=Sum(a[i]) 表示每次加大于等于a[i]的值 // 这道题要离散化 #i ...

  4. [HDU 5293]Tree chain problem(树形dp+树链剖分)

    [HDU 5293]Tree chain problem(树形dp+树链剖分) 题面 在一棵树中,给出若干条链和链的权值,求选取不相交的链使得权值和最大. 分析 考虑树形dp,dp[x]表示以x为子树 ...

  5. SPOJ PT07X Vertex Cover

    题目意思: 一棵树,找到最少的点能覆盖到所有的边,(也就是每条边俩端 至少有一个在你找到的集合): 解法:每条边只能被俩个点中的一个,或全部覆盖所以我们有树形DP来解: DP[num][flag]// ...

  6. POJ 3162.Walking Race 树形dp 树的直径

    Walking Race Time Limit: 10000MS   Memory Limit: 131072K Total Submissions: 4123   Accepted: 1029 Ca ...

  7. HDU 2196.Computer 树形dp 树的直径

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  8. 【XSY2190】Alice and Bob VI 树形DP 树剖

    题目描述 Alice和Bob正在一棵树上玩游戏.这棵树有\(n\)个结点,编号由\(1\)到\(n\).他们一共玩\(q\)盘游戏. 在第\(i\)局游戏中,Alice从结点\(a_i\)出发,Bob ...

  9. POJ 1655.Balancing Act 树形dp 树的重心

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14550   Accepted: 6173 De ...

随机推荐

  1. inno setup 跳过(Welcome)欢迎界面

    原文 http://zwkufo.blog.163.com/blog/static/25882512010816049549/ 在InnoSetup中,我们很容易用 function ShouldSk ...

  2. C++模板类中使用静态成员变量(例如Singleton模式)

    一个最简单Singleton的例子: ///////// Test.h /////////template <class _T>class CTest{private:_T n;stati ...

  3. SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

    BEGIN        WITH tx AS        (                SELECT a.object_id                      ,b.name AS s ...

  4. xmpp总结

    1. 浅谈对于XMPP协议自己的看法以及对其理解 http://blog.sina.com.cn/s/blog_69f68f880102uyeg.html 2. XMPP协议学习笔记一 http:// ...

  5. Win32K里的死循环

    引用注明>> [作者:张佩][原文:www.YiiYee.cn/blog] 这是我到新公司后上手的第一个issue.一线project师找到我,说有一个urgent issue有没有兴趣看 ...

  6. 网络视频传输的服务质量(QoS)

    QoS(Qualityof Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术.在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如We ...

  7. Objective-C——判断对象等同性

    无论我们使用什么语言,总是会出现需要判断两个对象是否相等的情况,OC当然也不例外.首先看一段代码: NSString *str1 = [[NSString alloc] initWithCString ...

  8. QImage 与 cv::Mat 之间的相互转换

    近期做图像处理方面的项目比較多,非常多算法自己从头写的话太浪费时间,并且自己写的也不一定完好,早就听说OpenCV在图像处理算法方面功能非常强大,一直没时间学习,这次正好项目用到了.暂时抱佛脚学习些O ...

  9. 20个热门jQuery的提示和技巧

    以下是一些非常有用的jQuery提示和所有jQuery的开发技巧. 1.优化性能复杂的选择 查询DOM中的一个子集,使用复杂的选择时,大幅提高了性能: var subset = $("&qu ...

  10. 子级Repeater获取 父级Repeater

    第一种方法,子级Repeater中绑定父级的某个字段: <%# DataBinder.Eval((Container.NamingContainer.NamingContainer as Rep ...