码迷,mamicode.com
首页 > 其他好文 > 详细

【HDU】1520 Anniversary party(树形dp)

时间:2018-02-01 23:07:56      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:scan   include   size   pre   break   acm   lap   while   splay   

题目

题目

 


分析

带权值的树上最大独立集

 


 

代码

技术分享图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=6005;
 4 int a[maxn], n, fa[maxn];
 5 vector<int> son[maxn];
 6 
 7 int dp(int u)
 8 {
 9     int sum1=a[u],sum2=0;
10     if(son[u].empty())
11     {
12         return a[u];
13     }
14     for(int i=0;i<son[u].size();i++)
15     {
16         for(int j=0;j<son[son[u][i]].size();j++)
17         sum1+=dp(son[son[u][i]][j]);
18         sum2+=dp(son[u][i]);
19     }
20     int ans=max(sum1,sum2);
21     return ans;
22 }
23 int main()
24 {
25     int k,l;
26     while(scanf("%d",&n)==1)
27     {
28         for(int i=1; i<=n;i++) scanf("%d",&a[i]);
29         while(scanf("%d%d",&k,&l) && k)
30         {
31             son[l].push_back(k);
32             fa[k]=1;
33         }
34         int Be=1;
35         for(int i=1;i<=n;i++)
36             if(!fa[i]) { Be=i; break; }
37         
38         printf("%d\n",dp(Be));
39         
40         for(int i=1;i<=n+1;i++) son[i].clear();
41         memset(fa,0,sizeof(fa));
42     }
43     
44     return 0; 
45 }
View Code

 

【HDU】1520 Anniversary party(树形dp)

标签:scan   include   size   pre   break   acm   lap   while   splay   

原文地址:https://www.cnblogs.com/noblex/p/8401489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!