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

hdu 1520 Anniversary party

时间:2017-09-13 21:20:05      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:点击   技术   bsp   get   turn   image   set   root   bool   

技术分享

技术分享

 

没有上司的舞会

树形dp

屠龙宝刀点击就送

#include <cstring>
#include <vector>
#include <cstdio>
#define N 6005
using namespace std;
vector<int>G[N];
bool flag[N];
int dp[N][2],n,r[N],root;
inline int max(int a,int b) {return a>b?a:b;}
void dfs(int x,int pre)
{
    dp[x][1]=r[x];
    for(int i=0;i<G[x].size();++i)
    {
        int v=G[x][i];
        if(v==pre) continue;
        dfs(v,x);
        dp[x][0]+=max(dp[v][0],dp[v][1]); 
        dp[x][1]+=dp[v][0];
    }
}
int Main()
{
    for(;scanf("%d",&n)!=EOF;)
    {
        for(int i=1;i<=n;++i) G[i].clear();
        memset(dp,0,sizeof(dp));
        memset(flag,0,sizeof(flag));
        for(int i=1;i<=n;++i) scanf("%d",&r[i]);
        int x,y;
        scanf("%d%d",&x,&y);
        for(;x&&y;)
        {
            G[y].push_back(x);
            flag[x]=1;
            scanf("%d%d",&x,&y); 
        }
        for(int i=1;i<=n;++i) if(!flag[i]) root=i;
        dfs(root,root);
        printf("%d\n",max(dp[root][0],dp[root][1]));
    }
    return 0;
}
int sb=Main();
int main(int argc,char *argv[]){;}

 

hdu 1520 Anniversary party

标签:点击   技术   bsp   get   turn   image   set   root   bool   

原文地址:http://www.cnblogs.com/ruojisun/p/7517600.html

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