Cod sursa(job #2780208)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 6 octombrie 2021 14:43:59
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <vector>

using namespace std;

const int N = 16005;
const int INF = (1 << 30);

vector<int> gr[N];
int val[N], dp[N];
bool viz[N];

void dfs(int nod) {
  viz[nod] = true;
  dp[nod] = val[nod];
  for (auto vec : gr[nod])
    if (!viz[vec]) {
      dfs(vec);
      dp[nod] = max(dp[nod], dp[nod] + dp[vec]);
    }
}

int main() {
  ifstream cin("asmax.in");
  ofstream cout("asmax.out");
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i)
    cin >> val[i];
  for (int i = 0; i < n - 1; ++i) {
    int x, y;
    cin >> x >> y;
    gr[x].push_back(y);
    gr[y].push_back(x);
  }
  cin.close();
  dfs(1);
  int maxi = -INF;
  for (int i = 1; i <= n; ++i)
    maxi = max(maxi, dp[i]);
  cout << maxi << "\n";
  cout.close();
  return 0;
}