HDU - 1561(简单树形背包)
来源:互联网 发布:潍坊行知学校邮编 编辑:程序博客网 时间:2024/05/16 10:33
#include <cstdio>#include <cstring>#include <vector>#include <iostream>#include <algorithm>using namespace std;const int inf = 100000;const int maxn = 205;int n,m,head[maxn],len;struct node{ int to,next;}tree[maxn*2];void init(){ memset(head,-1,sizeof(head)); len = 0;}void add_eadge(int u,int v){ tree[len].to = v; tree[len].next = head[u]; head[u] = len++;}int d[maxn][maxn],temp[maxn],w[maxn];void dfs(int root,int f){ for(int i=0;i<=m;i++) d[root][i] = 0; for(int i=head[root];i!=-1;i=tree[i].next){ if(tree[i].to == f) continue; int p = tree[i].to; dfs(p,root); for(int j=0;j<=m;j++) temp[j]=d[root][j]; for(int j=1;j<=m;j++) for(int k=1;k<=j;k++) d[root][j]=max(d[root][j],temp[j-k]+d[p][k-1]+w[p]); }}int main(){ while(scanf("%d %d",&n,&m)==2){ if(!n&&!m) break; init(); for(int i=1;i<=n;i++){ int x,y; scanf("%d %d",&x,&y); add_eadge(x,i); add_eadge(i,x); w[i] = y; } w[0] = 0; dfs(0,-1); printf("%d\n",d[0][m]); } return 0;}
0 0
- HDU - 1561(简单树形背包)
- hdu 1011 简单树形背包。
- hdu 1561 (树形dp+依赖背包)
- (简单) 树形背包 HDU 1561 The more, The Better
- HDU 1561 树形dp+背包
- hdu 1561(树形dp)(背包dp)
- hdu 1561 The more, The Better(树形背包)
- HDU 1561 The more, The Better(树形dp+背包)
- hdu-1561 The more, The Better(树形背包)
- hdu 1561树形dp+分组背包
- hdu 1561 树形dp+背包+dfs
- hdu 1011 Starship Troopers(树形背包)
- HDU 4003 (树形DP + 分组背包)
- 树形DP +01背包(HDU 1011)
- HDU 2415 Bribing FIPA(树形背包)
- HDU 1011 Starship Troopers(树形背包)
- HDU 4169 Wealthy Family(树形背包)
- hdu 1011 Starship Troopers (树形背包)
- 随机数求pai的问题,高中知识啊
- 第17周项目4-日期结构体(1)当年第几天
- Combination Sum求和为给定值的所有序列的解题思路(续)
- #1039 : 字符消除
- 鸟哥linux
- HDU - 1561(简单树形背包)
- JUNIT之COMMAND模式学习笔记
- WRTnode的基本配置(ssh登录与连接Internet)
- ERROR: 32-bit Linux Android emulator binaries are DEPRECATED
- android Theme使用总结
- 从有限状态机、图灵机到现代计算机
- 动漫发展前线
- 笔记:深入理解JVM 第3章 垃圾回收器与内存分配策略
- 程序员思维释放(一):打破常态