Cod sursa(job #2922139)

Utilizator AlexandruBenescuAlexandru Benescu AlexandruBenescu Data 4 septembrie 2022 17:01:49
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
#define N_MAX 16005
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");

vector <int> G[N_MAX];
int c[N_MAX], dp[N_MAX];
bool vis[N_MAX];

void DFS(int node){
  vis[node] = true;
  dp[node] = c[node];
  for (auto it : G[node])
    if (!vis[it]){
      DFS(it);
      dp[node] += max(dp[it], 0);
    }
}

int main(){
  int n, a, b, i, root = 1, mx = - N_MAX * N_MAX;
  fin >> n;
  for (i = 1; i <= n; i++)
    fin >> c[i];
  for (i = 1; i < n; i++){
    fin >> a >> b;
    G[a].push_back(b);
    G[b].push_back(a);
  }
  DFS(root);
  for (i = 1; i <= n; i++)
    mx = max(mx, dp[i]);
  fout << mx << "\n";
  return 0;
}