Cod sursa(job #2192160)

Utilizator timar_andreiTimar Andrei timar_andrei Data 4 aprilie 2018 21:06:49
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int N;
vector<int> G[16005];
int V[16005];
int Use[16005];
int Sum[16005];

void Read()
{
    fin>>N;
    for(int i=1;i<=N;i++)
        fin>>V[i];

    for(int i=1;i<N;i++)
    {
        int x,y;
        fin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

void DFS(int nod)
{
    Use[nod] = 1;
    Sum[nod] = V[nod];
    for(int i=0;i<G[nod].size();i++)
    {
        int vecin = G[nod][i];
        if (!Use[vecin])
        {
            DFS(vecin);
            Sum[nod] = max(Sum[nod], Sum[vecin] + Sum[nod]);
        }
    }
}

int main()
{
    Read();
    DFS(1);

    int s=-1000*16000;
    for(int i=1;i<=N;i++)
        if (s < Sum[i])
            s = Sum[i];
    fout<<s;

    return 0;
}