zoukankan      html  css  js  c++  java
  • [蓝桥杯2015初赛]生命之树

    既然是“暴力杯”,那么就采取暴力的解法。

    我们从下往上递归去找点就好了

    dfs无根树转有根树,递归找最优。注意开LL

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string>
     4 #include <string.h>
     5 #include <vector>
     6 #include <map>
     7 #include <stack>
     8 #include <set>
     9 #include <queue>
    10 #include <math.h>
    11 #include <cstdio>
    12 #include <iomanip>
    13 #include <time.h>
    14 
    15 #define LL long long
    16 #define INF 0x3f3f3f3f
    17 #define ls nod<<1
    18 #define rs (nod<<1)+1
    19 
    20 const int maxn = 1e5 + 10 ;
    21 const LL mod = 20010905;
    22 
    23 std::vector<LL> tree[maxn];
    24 LL w[maxn],ww[maxn],ans;
    25 
    26 void dfs(int u,int father) {
    27     int len = tree[u].size();
    28     ww[u] = w[u];
    29     for (int i = 0;i < len;i++) {
    30         int v = tree[u][i];
    31         if (v != father) {
    32             dfs(v, u);
    33             if (ww[v] > 0)
    34                 ww[u] += ww[v];
    35         }
    36     }
    37     if (ww[u] > ans)
    38         ans = ww[u];
    39 }
    40 
    41 int main() {
    42     int n;
    43     scanf("%d",&n);
    44     for (int i = 1;i <= n;i++) {
    45         scanf("%lld",&w[i]);
    46     }
    47     for (int i = 1;i <= n-1;i++) {
    48         int u,v;
    49         scanf("%d%d",&u,&v);
    50         tree[u].push_back(v);
    51         tree[v].push_back(u);
    52     }
    53     ans = 0;
    54     dfs(1,0);
    55     printf("%lld
    ",ans);
    56     return 0;
    57 }
  • 相关阅读:
    sql-编程语句
    数据库语句基础3
    数据库语句 2
    sql常用的语句
    SQL语句
    锚点链接...
    sqlserver 三大范式
    sqlserver 约束
    c#SQLserver数据类型
    c#中switch语句用法
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/12228400.html
Copyright © 2011-2022 走看看