【题解】Luogu SP1435 PT07X - Vertex Cover
原题传送门
求树的最小点覆盖,就是一个树形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相关推荐
- PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:首先把所有的边存储下来,使用结构体,结构体中保存两个端点. 然后对于每次询问,将出现过的顶点标志为true放在st数组中,然后遍历所有 ...
- 1134. Vertex Cover (25)
1134. Vertex Cover (25) 时间限制 600 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A vertex ...
- 集合覆盖 顶点覆盖: set cover和vertex cover
这里将讲解一下npc问题中set cover和vertex cover分别是什么. set cover: 问题定义: 实例:现在有一个集合A,其中包含了m个元素(注意,集合是无序的,并且包含的元素也是 ...
- 题解 luogu P2568 GCD
题解 luogu P2568 GCD 时间:2019.3.11 欧拉函数+前缀和 题目描述 给定整数\(N\),求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x, ...
- 二分图匹配 + 最小点覆盖 - Vertex Cover
Vertex Cover Problem's Link Mean: 给你一个无向图,让你给图中的结点染色,使得:每条边的两个顶点至少有一个顶点被染色.求最少的染色顶点数. analyse: 裸的最小点 ...
- 从顶点覆盖(Vertex Cover)到碰撞集(Hitting Set)的归约
碰撞集问题 给定一组集合{S1,S2,S3,-,Sn}和预算b,问是否存在一个集合H,其大小不超过b,且H和所有Si(i=1, 2, -, n)相交. 顶点覆盖问题 给定图G,问是否存在一个顶点集合V ...
- Vertex Cover问题
最近算法课上完成了一道作业题,Vertex Cover,拿出来与大家分享一下.算法不能说有多好,有问题欢迎致信ms08.shiroh@gmail.com 1,问题描述 首先Vertex Cover问题 ...
- SCU 4439 Vertex Cover(二分图最小覆盖点)题解
题意:每一条边至少有一个端点要涂颜色,问最少涂几个点 思路:最小顶点覆盖:用最少的点,让每条边都至少和其中一个点关联,显然是道裸最小顶点覆盖题: 参考:二分图 代码: #include<iost ...
- HDU-6150 Vertex Cover(构造)
传送门:HDU-6150 网络赛的时候不知道哪根筋搭错了,硬是想不出来,感觉一道全世界都会写的题目,自己就是写不出(导致挂机2个半小时)好想进第一页啊TAT 题意:有一个贪心算法求最小顶点覆盖是每次选 ...
最新文章
- 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
- Linux top小结
- 机器学习一定要很优秀才能做嘛?其实我们都可以。
- iOS之深入解析操作系统的架构
- R语言神经网络与深度学习(一)
- 使用si ob 导出,导入部分表
- 解决由于Windows Installer造成的SAV安装失败的问题
- Mock以及Mockito的使用
- 批量删除数据库表数据 备份
- bash脚本基础概念注意点
- php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
- LU分解法求解方程组(C语言)
- 中文自然语言处理入门实战
- 腾讯云服务器-公网IP与域名绑定
- 用java实现楼层导航_楼层导航
- 虚拟机2008安装DHPC服务器,Windows Server 2008 配置DHCP服务器
- python 学习笔记之手把手讲解如何使用原生的 urllib 发送网络请求
- 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一
- fu-liou radiative transfer model 学习日记(一)
- 苹果语音备忘录可以转文字吗?可以语音转文字的备忘录便签