POJ 1947 Rebuilding Roads 树形dp+01背包
来源:互联网 发布:c语言取反加一 编辑:程序博客网 时间:2024/06/08 02:46
题意:
一棵n个节点的树如何减去最少的边使得剩下的结点和为m
分析:
dp【i】【j】表示i为根包含j个节点最少减去的边数
那么状态转移方程dp【root】【i】 = min(dp【root】【i-k】+dp【child】【k】 - 1,dp【root】【i】);
dp初始化 dp【root】【1】 = num【i】
ACcode:
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <vector>#define maxn 205#define inf 0x3f3f3f3f#define ll long longusing namespace std;int n,m,tmp;struct N{ int to,next;}my[maxn<<1];int dp[maxn][maxn],num[maxn],son[maxn];int head[maxn],tot;void init(){ memset(head,-1,sizeof(head)); memset(dp,0x7f,sizeof(dp)); memset(son,0,sizeof(son)); memset(num,0,sizeof(num)); tot=0;}void add(int u,int v){ my[tot].to=v; my[tot].next=head[u]; head[u]=tot++;}void dfs(int u){ num[u]=1; for(int i=head[u];i!=-1;i=my[i].next){ int v=my[i].to; dfs(v); num[u]+=num[v]; for(int j=num[u];j>=1;--j) for(int k=1;k<j;++k) dp[u][j]=min(dp[u][j],dp[u][j-k]+dp[v][k]-1); }}int main(){ while(scanf("%d%d",&n,&m)!=EOF){ init(); for(int i=1;i<n;++i){ int u,v; scanf("%d%d",&u,&v); add(u,v); son[u]++; } for(int i=1;i<=n;++i)dp[i][1]=son[i]; dfs(1); int ans=dp[1][m]; for(int i=2;i<=n;++i) ans=min(ans,dp[i][m]+1); cout<<ans<<'\12'; } return 0;}
0 0
- poj 1947 Rebuilding Roads (树形背包dp)
- POJ 1947 Rebuilding Roads 树形DP(背包)
- poj 1947 Rebuilding Roads (树形dp+背包)
- poj 1947 Rebuilding Roads 树形dp背包
- poj 1947Rebuilding Roads树形dp(背包)
- POJ 1947 Rebuilding Roads(树形DP + 01背包)
- POJ 1947 Rebuilding Roads (树形dp + 01背包)
- POJ 1947 Rebuilding Roads 树形dp+01背包
- POJ 1947 Rebuilding Roads 树形dp+01背包
- poj 1947 Rebuilding Roads 树形dp加背包
- poj 1947 Rebuilding Roads 树形背包 ★
- poj 1947 Rebuilding Roads (树形背包)
- POJ--1947[Rebuilding Roads] 树形DP
- POJ 1947 Rebuilding Roads 树形DP
- POJ 1947 Rebuilding Roads 树形dp
- poj 1947 Rebuilding Roads 树形dp
- poj 1947 Rebuilding Roads(树形DP)
- POJ--1947--Rebuilding Roads--树形DP
- Zookeeper分布式队列的实现
- android Activity管理类(全局管理Activity)
- 每周荐书:SLAM、Vue2、爬虫(评论送书)
- 宽度优先搜索与深度优先搜索
- 动态库链接问题解决
- POJ 1947 Rebuilding Roads 树形dp+01背包
- layui里的弹出框问题
- 04_mysql文本协议
- 让系统更清晰——解构复杂系统的五种常用模型
- Spring mvc 单个@RequestMapping返回特定Content-Type的配置
- js进阶02、构造函数的继承者们
- java基础5
- 负载均衡之LVS+keepalived
- SDL介绍