Cod sursa(job #1769754)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 3 octombrie 2016 08:17:46
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<vector>
#define NMax 16005
using namespace std;

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

int N,Sol = -(1<<30);
int C[NMax],SMax[NMax];
bool Use[NMax];

vector <int> V[NMax];

void Read()
{
    fin>>N;

    for(int i = 1 ; i <= N ; ++i)
        fin>>C[i];

    for(int i = 1 ; i <= N-1 ; ++i)
    {
        int a,b;    fin>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
}

void DFS(int nod)
{
    Use[nod] = 1;
    SMax[nod] = C[nod];

    for(int i = 0 ; i < (int) V[nod].size() ; ++i)
    {
        int Vecin = V[nod][i];

        if(!Use[Vecin])
        {
            DFS(Vecin);
            SMax[nod] = max(SMax[nod],SMax[nod]+SMax[Vecin]);
        }
    }

    Sol = max(Sol,SMax[nod]);
}

void Print()
{
    fout<<Sol;
}

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

    return 0;
}