Cod sursa(job #2070841)

Utilizator papinub2Papa Valentin papinub2 Data 19 noiembrie 2017 22:48:03
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

const int Nmax = 16005;

int n, x, y, maxim = -1000;
int v[Nmax], viz[Nmax], dp[Nmax];

vector <int> A[Nmax];

int DFS (int P)
{
    viz[P] = 1;

    for (int i = 0; i < A[P].size(); i++)
        if (!viz[A[P][i]])
            dp[P] = dp[P] + DFS(A[P][i]);

    dp[P] = dp[P] + v[P];
    if (dp[P] > maxim)
        maxim = dp[P];

    return max(dp[P], 0);
}

int main()
{
    in >> n;

    for (int i = 1; i <= n; i++)
    {
        in >> v[i];
        maxim = max (maxim, v[i]);
    }

    for (int i = 1; i <= n - 1; i++)
    {
        in >> x >> y;

        A[x].push_back(y);
        A[y].push_back(x);
    }

    DFS(1);
    out << maxim;
    return 0;
}