zoukankan      html  css  js  c++  java
  • 【HDU】1520 Anniversary party(树形dp)

    题目

    题目


    分析

    带权值的树上最大独立集


    代码

     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
    ",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
  • 相关阅读:
    GCD HDU
    Finding Lines UVALive
    Chinese Mahjong UVA
    DNA Evolution CodeForces
    String Reconstruction (并查集)
    Number Cutting Game HDU
    Paint the Wall ZOJ
    Star sky CodeForces
    Haunted Graveyard ZOJ
    GuGuFishtion HDU
  • 原文地址:https://www.cnblogs.com/noblex/p/8401489.html
Copyright © 2011-2022 走看看