hdu 1561 The more, The Better(树形dp)

Posted pb2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1561 The more, The Better(树形dp)相关的知识,希望对你有一定的参考价值。

http://acm.hdu.edu.cn/showproblem.php?pid=1561

 

树形dp:

 

 1 #include<iostream>
 2 #include<cstring>
 3 #include<vector>
 4 using namespace std;
 5 
 6 const int mx=222;
 7 int dp[mx][mx];
 8 vector<int>g[mx];
 9 
10 void dfs(int x,int m)
11 {
12     if (m==0) return ;
13     for (int i=0;i<g[x].size();i++)
14     {
15         int cut=g[x][i];
16         dfs(cut,m-1);
17         for (int j=m;j>=1;j--)
18         {
19             int v=j;
20             for(int k=1;k<v;k++)
21             {
22                 dp[x][v]=max(dp[x][v],dp[x][v-k]+dp[cut][k]);
23             }
24         }
25     }
26 }
27 
28 int main()
29 {
30     int n,m;
31     while(cin>>n>>m)
32     {
33         memset(dp,0,sizeof(dp));
34         if (!n&&!m) return 0;
35         int a,i;
36         for (i=0;i<=n;i++) g[i].clear();
37         for (i=1;i<=n;i++)
38         {
39             cin>>a>>dp[i][1];
40             g[a].push_back(i);
41         }
42         dfs(0,m+1);
43         cout<<dp[0][m+1]<<endl;
44     }
45 }

 

以上是关于hdu 1561 The more, The Better(树形dp)的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1561 The more, The Better(树形dp)

hdu1561The more, The Better(树形背包)

hdu1561 The more, The Better (树形DP)

hdu 1561 The more, The Better 树形dp

HDU1561 The more, The Better(树型DP)

hdu 1561 The more, The Better (依赖背包 树形dp)