原题传送门

求树的最小点覆盖,就是一个树形dp

类似于没有上司的舞会

dp的状态为\(f[i][0/1]\),表示i节点是否选择

边界是\(f[x][0]=0\),\(f[x][1]=1\)

转移方程是

\(f[i][0]=\sum_{j=son[i]} f[j][1]\)

\(f[i][1]=\sum_{j=son[i]} Min(f[j][0],f[j][1])\)

最后答案就是\(Min(f[1][0],f[1][1])\)

#include <bits/stdc++.h>
#define getchar nc
#define N 100005
using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{register int x=0,f=1;register char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;
}
inline void write(register int x)
{if(!x)putchar('0');if(x<0)x=-x,putchar('-');static int sta[20];register int tot=0;while(x)sta[tot++]=x%10,x/=10;while(tot)putchar(sta[--tot]+48);
}
inline int Min(register int a,register int b)
{return a<b?a:b;
}
struct node{int to,next;
}e[N<<1];
int head[N],cnt=0;
inline void add(register int u,register int v)
{e[++cnt]=(node){v,head[u]};head[u]=cnt;
}
int n,f[N][2];
inline void dfs(register int u,register int fa)
{f[u][1]=1;f[u][0]=0;for(register int i=head[u];i;i=e[i].next){int v=e[i].to;if(v==fa)continue;dfs(v,u);f[u][1]+=Min(f[v][0],f[v][1]);f[u][0]+=f[v][1];}
}
int main()
{n=read();for(register int i=1;i<n;++i){int u=read(),v=read();add(u,v),add(v,u);}dfs(1,0);write(Min(f[1][0],f[1][1]));return 0;
}

转载于:https://www.cnblogs.com/yzhang-rp-inf/p/10329700.html

【题解】Luogu SP1435 PT07X - Vertex Cover相关推荐

  1. PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:首先把所有的边存储下来,使用结构体,结构体中保存两个端点. 然后对于每次询问,将出现过的顶点标志为true放在st数组中,然后遍历所有 ...

  2. 1134. Vertex Cover (25)

    1134. Vertex Cover (25) 时间限制 600 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A vertex ...

  3. 集合覆盖 顶点覆盖: set cover和vertex cover

    这里将讲解一下npc问题中set cover和vertex cover分别是什么. set cover: 问题定义: 实例:现在有一个集合A,其中包含了m个元素(注意,集合是无序的,并且包含的元素也是 ...

  4. 题解 luogu P2568 GCD

    题解 luogu P2568 GCD 时间:2019.3.11 欧拉函数+前缀和 题目描述 给定整数\(N\),求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x, ...

  5. 二分图匹配 + 最小点覆盖 - Vertex Cover

    Vertex Cover Problem's Link Mean: 给你一个无向图,让你给图中的结点染色,使得:每条边的两个顶点至少有一个顶点被染色.求最少的染色顶点数. analyse: 裸的最小点 ...

  6. 从顶点覆盖(Vertex Cover)到碰撞集(Hitting Set)的归约

    碰撞集问题 给定一组集合{S1,S2,S3,-,Sn}和预算b,问是否存在一个集合H,其大小不超过b,且H和所有Si(i=1, 2, -, n)相交. 顶点覆盖问题 给定图G,问是否存在一个顶点集合V ...

  7. Vertex Cover问题

    最近算法课上完成了一道作业题,Vertex Cover,拿出来与大家分享一下.算法不能说有多好,有问题欢迎致信ms08.shiroh@gmail.com 1,问题描述 首先Vertex Cover问题 ...

  8. SCU 4439 Vertex Cover(二分图最小覆盖点)题解

    题意:每一条边至少有一个端点要涂颜色,问最少涂几个点 思路:最小顶点覆盖:用最少的点,让每条边都至少和其中一个点关联,显然是道裸最小顶点覆盖题: 参考:二分图 代码: #include<iost ...

  9. HDU-6150 Vertex Cover(构造)

    传送门:HDU-6150 网络赛的时候不知道哪根筋搭错了,硬是想不出来,感觉一道全世界都会写的题目,自己就是写不出(导致挂机2个半小时)好想进第一页啊TAT 题意:有一个贪心算法求最小顶点覆盖是每次选 ...

最新文章

  1. 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
  2. Linux top小结
  3. 机器学习一定要很优秀才能做嘛?其实我们都可以。
  4. iOS之深入解析操作系统的架构
  5. R语言神经网络与深度学习(一)
  6. 使用si ob 导出,导入部分表
  7. 解决由于Windows Installer造成的SAV安装失败的问题
  8. Mock以及Mockito的使用
  9. 批量删除数据库表数据 备份
  10. bash脚本基础概念注意点
  11. php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
  12. LU分解法求解方程组(C语言)
  13. 中文自然语言处理入门实战
  14. 腾讯云服务器-公网IP与域名绑定
  15. 用java实现楼层导航_楼层导航
  16. 虚拟机2008安装DHPC服务器,Windows Server 2008 配置DHCP服务器
  17. python 学习笔记之手把手讲解如何使用原生的 urllib 发送网络请求
  18. 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一
  19. fu-liou radiative transfer model 学习日记(一)
  20. 苹果语音备忘录可以转文字吗?可以语音转文字的备忘录便签

热门文章

  1. 旅游景点人物进出系统[OC项目]
  2. linux基础,文件目录管理,cd、rm、mkdir
  3. 64位LINUX下hadoop2.2.0重新编译及安装步骤
  4. 2010.9.29 今日问题
  5. Evaluation method
  6. protect a health
  7. 关闭微信朋友圈的第二天的感悟
  8. C++防止文件重复包含
  9. 山特UPS电源三种工作模式解析
  10. js_调试_01_14 个你可能不知道的 JavaScript 调试技巧