• hdu1502 树形dp入门题


    没有上司的舞会....初一就做过了.....

    #include<bits/stdc++.h>
    #define MAXN 6005
    using namespace std;
    
    int n,tot,ans;
    int a[MAXN],h[MAXN],in[MAXN],f[MAXN][3];
    struct node{
        int from,to,next;
    }e[MAXN<<1];
    
    void init(){
        tot=ans=0;
        memset(h,-1,sizeof(h));
        memset(in,0,sizeof(in));
        memset(f,0,sizeof(f));
    }
    
    void add(int x,int y){
        tot++;
        e[tot].from=x;
        e[tot].to=y;
        e[tot].next=h[x];
        h[x]=tot;
    }
    
    int dfs(int now,int fa){
        f[now][1]=a[now];
        f[now][0]=0;
        for(int i=h[now];i!=(-1);i=e[i].next){
                dfs(e[i].to,now);
                f[now][1]=max(f[now][1],f[now][1]+f[e[i].to][0]);
                f[now][0]=max(f[now][0],f[now][0]+max(f[e[i].to][0],f[e[i].to][1]));
        }
    }
    
    int main(){
        while(scanf("%d",&n)==1){
            for(int i=1;i<=n;i++)scanf("%d",&a[i]);
            init();
            while(1){
                int x,y;cin>>x>>y;if(x==0&&y==0)break;
                add(y,x);
                in[x]++;
            }
            for(int i=1;i<=n;i++){
                if(in[i]==0){
                dfs(i,i);
                ans+=max(f[i][0],f[i][1]);    
                }
            }
            cout<<ans<<endl;
        }
    }
    View Code
  • 相关阅读:
    Mysql优化之Explain查询计划查看
    map转listmap
    代码大全
    cas
    日志
    xml模板
    springboot
    日志
    spring应用
    拆分表中sheet
  • 原文地址:https://www.cnblogs.com/shatianming/p/12299433.html
Copyright © 2020-2023  润新知