Cod sursa(job #2766934)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 3 august 2021 21:57:24
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 16000;
int a[MAXN];
vector<int> G[MAXN];

void dfs(int u, int p) {
  for (int v : G[u])
    if (v != p) {
      dfs(v, u);
      a[u] += max(0, a[v]);
    }
}

void max_self(int &x, int y) {
  if (x < y)
    x = y;
}

int main() {
  int n;
  fin >> n;
  for (int v = 0; v < n; ++v)
    fin >> a[v];
  for (int e = 1; e < n; ++e) {
    int u, v;
    fin >> u >> v;
    --u, --v;
    G[u].emplace_back(v);
    G[v].emplace_back(u);
  }
  dfs(0, -1);
  int ans = a[0];
  for (int v = 1; v < n; ++v)
    max_self(ans, a[v]);
  fout << ans << '\n';
  fin.close();
  fout.close();
  return 0;
}