zoukankan      html  css  js  c++  java
  • ZUCC2129 The Tree of Power(树形DP)

    树上最大子列和,开一个dp数组表示以当前节点为起点的路线最大能量值为多少,然后就是一些状态的转移。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e5+100;
    typedef long long ll;
    vector<int> g[maxn];
    ll dp[maxn];//表示以第i个节点为起点的路线的最大力量值
    ll a[maxn];
    int N;
    void dfs (int u,int pre) {
        dp[u]=a[u];
        for (int i=0;i<g[u].size();i++) {
            int v=g[u][i];
            if (v==pre) continue;
            dfs(v,u);
            dp[u]+=dp[v];
            if (dp[u]<0) dp[u]=0;
        }
    } 
    int main () {
        int T;
        scanf("%d",&T);
        while (T--) {
            scanf("%d",&N);
            dp[0]=0;
            for (int i=1;i<=N;i++) scanf("%lld",&a[i]),dp[i]=0,g[i].clear();
            for (int i=1;i<N;i++) {
                int u,v;
                scanf("%d%d",&u,&v);
                g[u].push_back(v);
                g[v].push_back(u);
            }
            ll ans=0;
            dfs(1,0);
            for (int i=1;i<=N;i++) ans=max(ans,dp[i]);
            cout<<ans<<"
    ";
        }
    } 
  • 相关阅读:
    Android-Drawable
    DOM4J与JDOM解析xml文档
    SAX解析xml文档
    java中的xml简介与DOM解析xml
    二进制I/O
    java中的集合框架
    文本I/O
    Java中基本数据的包装类
    Sting 字符串类
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13022019.html
Copyright © 2011-2022 走看看