Cod sursa(job #2379908)

Utilizator AndreiVisoiuAndrei Visoiu AndreiVisoiu Data 14 martie 2019 11:20:52
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 in("asmax.in");
ofstream out("asmax.out");

const int NMAX = 16001;

vector<int> A[NMAX];

int N, ma = - (1 << 25);
int dp[NMAX]; /// dp[i] -> suma maxima a subarborelui cu radacina in i;

void dfs(const int& i, const int& t) {
    for(const auto& vec: A[i])
        if(vec != t) {
            dfs(vec, i);
            dp[i] = max(dp[i], dp[i] + dp[vec]);
        }
    ma = max(dp[i], ma);
}

int main()
{
    in >> N;
    for(int i = 1; i <= N; i++)
        in >> dp[i];
    int x, y;
    for(int i = 1; i < N; i++) {
        in >> x >> y;
        A[x].push_back(y);
        A[y].push_back(x);
    }

    dfs(1, 0);

    out << ma << '\n';
    return 0;
}