Cod sursa(job #1615435)

Utilizator bogdanciurezubogdan ciurezu bogdanciurezu Data 26 februarie 2016 16:11:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

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

const int nmax = 16050;
int maxim=-1<<30;

int av[nmax], val[nmax];
bool ver[nmax];

vector <int> graf[nmax];

void parc(int nod){
    av[nod] = val[nod];
    ver[nod] = true;

    for(int i = 0; i < graf[nod].size(); ++i){
        if(!ver[ graf[nod][i] ]){
            parc(graf[nod][i]);

            if(av[ graf[nod][i] ] > 0)
                av[nod] += av[ graf[nod][i] ];
        }
    }

    if(av[nod] > maxim)
        maxim = av[nod];
}

int n;
int main()
{
    f>>n;

    for(int i = 1; i <= n; ++i){
        f>>val[i];
    }

    for(int i = 1, x, y; i < n; ++i){
        f>>x>>y;
        graf[x].push_back(y);
        graf[y].push_back(x);
    }

    parc(1);

    g<<maxim<<'\n';


    return 0;
}