【bzoj1596】[Usaco2008 Jan]电话网络 树形dp
来源:互联网 发布:下载班海软件 编辑:程序博客网 时间:2024/05/19 15:44
基础的树形dp
f[x][0/1/2]表示选x/不选x x被控制/x不被控制的最小代价
f[x][0]=1+sigma{min(f[x][0],f[x][1],f[x][2])}
f[x][1]=sigma{min(f[y][0],f[y][1])}-max{min(f[y][0],f[y][1])-f[y][0]}
f[x][2]=sigma{f[y][1]}
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>#include<algorithm>#define inf 10000000#define maxn 10010using namespace std;int f[maxn][3],head[maxn],to[2*maxn],next[2*maxn];int n,m,num;void addedge(int x,int y){num++;to[num]=y;next[num]=head[x];head[x]=num;}void dfs(int x,int fa){f[x][0]=1;f[x][2]=0;int mx=-inf;for (int p=head[x];p;p=next[p]) if (to[p]!=fa) { dfs(to[p],x); f[x][0]+=min(f[to[p]][0],min(f[to[p]][1],f[to[p]][2])); f[x][1]+=min(f[to[p]][0],f[to[p]][1]);mx=max(mx,min(f[to[p]][0],f[to[p]][1])-f[to[p]][0]); f[x][2]+=f[to[p]][1]; }f[x][1]-=mx;}int main(){scanf("%d",&n);for (int i=1;i<n;i++){int x,y;scanf("%d%d",&x,&y);addedge(x,y);addedge(y,x);}dfs(1,0);printf("%d\n",min(f[1][0],f[1][1]));return 0;}
0 0
- 【bzoj1596】[Usaco2008 Jan]电话网络 树形dp
- BZOJ1596: [Usaco2008 Jan]电话网络 树形DP
- [BZOJ1596][Usaco2008 Jan]电话网络(贪心||树形dp)
- [BZOJ1596][Usaco2008 Jan]电话网络(树形dp)
- [BZOJ1596] [Usaco2008 Jan]电话网络
- bzoj1596 [Usaco2008 Jan]电话网络
- 【bzoj1596】[Usaco2008 Jan]电话网络
- BZOJ1596 [Usaco2008 Jan]电话网络
- [Usaco2008 Jan]电话网络 贪心 or 树形DP
- BZOJ 1596: [Usaco2008 Jan]电话网络 树形dp||贪心
- 1596: [Usaco2008 Jan]电话网络
- bzoj 1596: [Usaco2008 Jan]电话网络
- bzoj 1596 [Usaco2008 Jan]电话网络
- 【BZOJ】1596: [Usaco2008 Jan]电话网络
- Bzoj 1596: [Usaco2008 Jan]电话网络
- vijos1144&&bzoj1596(树形dp,树上最小控制集
- BZOJ1596【Tree DP】
- poj3659[USACO2008,Jan]Cell Phone Network手机网络
- ClassLoader, JavaAgent, Aspectj Weaving
- 虚拟机字节码执行引擎
- html5 css3 配色表
- 管理学中的 Expectancy Theory - 期望理论
- windows java环境变量配置
- 【bzoj1596】[Usaco2008 Jan]电话网络 树形dp
- 学习笔记------数据结构(C语言版)串的堆分配存储表示
- iOS开发中对文件目录的访问及管理的基本方法小结
- iOS 去掉UITextField前后空格
- 在Sublime Text里开发go
- jQuery编程基础精华03()
- poj 1088 滑雪
- 快速初始化 NSArray *viewControllers = @[viewController1, viewController2];
- 探索工作流(七)--流程实例持久化