• Tyvj1052(树形DP)


    P1052 没有上司的舞会
    时间: 1000ms / 空间: 131072KiB / Java类名: Main

    描述

    Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起与会。

    输入格式

    第一行一个整数N。(1<=N<=6000)
    接下来N行,第i+1行表示i号职员的快乐指数Ri。(-128<=Ri<=127)
    接下来N-1行,每行输入一对整数L,K。表示K是L的直接上司。
    最后一行输入0,0。

    输出格式

    输出最大的快乐指数。

    测试样例1

    输入









    1 3 
    2 3 
    6 4 
    7 4 
    4 5 
    3 5 
    0 0

    输出

    5
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int MAXN=100005;
    struct Edge{
        int to,next;
    }es[MAXN];
    int n;
    int w[MAXN];
    int dp[MAXN][2];//dp[u][0]表示不选u结点的快乐指数最大值,dp[u][1]表示选上 
    int head[MAXN],tot;
    void addedge(int u,int v)
    {
        es[tot].to=v;
        es[tot].next=head[u];
        head[u]=tot++;
    }
    
    void dfs(int u)
    {
        dp[u][0]=0;
        dp[u][1]=w[u];
        int max0=0;
        int max1=0;
        for(int i=head[u];i!=-1;i=es[i].next)
        {
            int v=es[i].to;
            dfs(v);
            max0+=max(dp[v][0],dp[v][1]);
            max1+=dp[v][0];
        }
        dp[u][0]+=max0;
        dp[u][1]+=max1;
    }
    int deg[MAXN];
    int main()
    {
        memset(head,-1,sizeof(head));
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&w[i]);
        for(int i=1;i<=n-1;i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            addedge(v,u);
            deg[u]++;
        }  
        scanf("%*d%*d");
        for(int i=1;i<=n;i++)
        {
            if(deg[i]==0)
            {
                dfs(i);
                printf("%d
    ",max(dp[i][0],dp[i][1]));
                break;
            }
        }
        return 0;
    }
  • 相关阅读:
    3月工作问题总结
    【读书笔记】linux编程艺术
    项目管理工具 Trac入门
    [node.js]开放平台接口调用测试
    mysql 高并发更新计数问题
    memcache 问题 socket or its streams already null in trueClose call
    hadoop学习笔记
    node.js学习与应用
    mc参数备忘&javajson备忘
    WCF技术剖析_学习笔记之三
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5221905.html
Copyright © 2020-2023  润新知