zoukankan      html  css  js  c++  java
  • 『P1122』最大子树和

    题目传送门

      输入样例

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

       输出样例

    3

      code

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int fro[100005],cnt,n,v[100005],ans=0;
     4 struct node{int to,nxt;}a[100000];
     5 void add(int x,int y) {
     6     a[++cnt].to=y; a[cnt].nxt=fro[x]; fro[x]=cnt;
     7 }
     8 
     9 int dfs(int u,int fa) {
    10     int f=v[u];
    11     for(int i=fro[u];i!=0;i=a[i].nxt) {
    12         int v=a[i].to;
    13         if(v!=fa) f+=max(dfs(v,u),0);
    14     }
    15     ans=max(ans,f);
    16     return f;
    17 }
    18 
    19 int main() {
    20     scanf("%d",&n);
    21     for(int i=1;i<=n;i++) scanf("%d",&v[i]);
    22     for(int i=1;i<n;i++) {
    23         int x,y; scanf("%d%d",&x,&y);
    24         add(x,y); add(y,x);
    25     }
    26     dfs(1,0);
    27     printf("%d",ans);
    28 }
    29 /*
    30 树形DP
    31 子树的取舍:取(加上价值),舍(价值为0)
    32 */
  • 相关阅读:
    线程高并发
    29(套接字)就是网络编程
    28线程
    27 枚举
    26静态导入和可变参数
    25JDK新特性
    25断言 assert关键字
    24单元测试 junit
    炫酷CSS
    PHP 汉字转拼音类
  • 原文地址:https://www.cnblogs.com/qq8260573/p/10145697.html
Copyright © 2011-2022 走看看