Cod sursa(job #2477905)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 21 octombrie 2019 12:11:00
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

const int NMAX = 16000;
const long long INF = 16000000;


vector<int> G[NMAX + 1];
int v[NMAX + 1], viz[NMAX + 1];
long long best[NMAX + 1];

int dfs( int node ) {
  viz[node] = 1;
  for( auto it : G[node] ) {
    if( viz[it] == 0 )
      best[node] += max(0, dfs(it));
  }
  best[node] += v[node];
  return best[node];
}

int main() {
    int n, i, x, y;
    fin>>n;
    for( i = 1; i <= n; i ++ ) {
      fin>>v[i];
      best[i] = 0;
    }
    for( i = 1; i <= n - 1; i ++ ) {
      fin>>x>>y;
      G[x].push_back(y);
      G[y].push_back(x);
    }
    dfs(1);
    long long ans = 0;
    for( i = 1; i <= n; i ++ )
      ans = max(ans, best[i]);
    fout<<ans;
    return 0;
}