标签:树型dp+背包
3 2 0 1 0 2 0 3 7 4 2 2 0 1 0 4 2 1 7 1 7 6 2 2 0 0
5 13树型DP+背包问题!AC码:#include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; #define MAX 205 vector<int> adj[MAX]; int f[MAX][MAX],tot[MAX],weight[MAX]; int m; int max(int a,int b) { return a>b?a:b; } int DFS(int u) { tot[u]=1; f[u][1]=weight[u]; int i,j,k,v; for(i=0;i<adj[u].size();i++) { v=adj[u][i]; tot[u]+=DFS(v); } for(i=0;i<adj[u].size();i++) { v=adj[u][i]; for(j=tot[u];j>=1;j--) { for(k=1;k<j&&k<=tot[v];k++) f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]); } } return tot[u]; } int main() { int n,i,u; while(~scanf("%d%d",&n,&m)&&(n+m)) { for(i=0;i<=n;i++) adj[i].clear(); for(i=1;i<=n;i++) { scanf("%d%d",&u,&weight[i]); adj[u].push_back(i); } memset(f,0,sizeof(f)); m++; DFS(0); printf("%d\n",f[0][m]); } return 0; }
HDU 1561 The more ,The Better,布布扣,bubuko.com
标签:树型dp+背包
原文地址:http://blog.csdn.net/u012804490/article/details/25819677