Cod sursa(job #2507584)

Utilizator StanCatalinStanCatalin StanCatalin Data 10 decembrie 2019 15:57:09
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

const int dim = 16005;
const int INF = -1001 * dim;

int v[dim],n,cost_max[dim],grad[dim],nr;
vector <int> vec[dim];

void DFS(int nod,int parent)
{
    for (auto p:vec[nod])
    {
        if (p != parent)
        {
            DFS(p,nod);
            cost_max[nod] = max(cost_max[nod],cost_max[nod] + cost_max[p]);
        }
    }
}

int main()
{
    in >> n;
    for (int i=1; i<=n; i++) in >> v[i];
    for (int i=1,x,y; i<=n-1; i++)
    {
        in >> x >> y;
        grad[x]++;
        grad[y]++;
        vec[x].push_back(y);
        vec[y].push_back(x);
    }
    for (int i=1; i<=n; i++) cost_max[i] = v[i];
    DFS(1,0);
    int maxi = INF;
    for (int i=1; i<=n; i++) maxi = max(maxi , cost_max[i]);
    out << maxi;
    return 0;
}