Cod sursa(job #1425570)

Utilizator Corina1997Todoran Ana-Corina Corina1997 Data 27 aprilie 2015 18:09:25
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream is("asmax.in");
ofstream os("asmax.out");


void Read();
void Df(int node);

vector<int> val;
vector<vector<int> > arb;
int n;
vector<bool> ok;
int maxim = -0x3f3f3f3f;

int main()
{
    Read();
    Df(1);
    for(int i = 1; i <= n; ++i)
    {
        maxim = max( maxim, val[i]);
    }
    os << maxim;
    is.close();
    os.close();
    return 0;
}

void Read()
{
    is >> n;
    int x;
    int a, b;
    val.resize(n+1);
    arb.resize(n+1);
    ok.resize(n+1);
    for(int i = 1; i <= n; ++i)
    {
        is >> x;
        val[i] = x;
    }

    for(int i = 1; i <= n-1; ++i)
    {
        is >> a >> b;
        arb[a].push_back(b);
        arb[b].push_back(a);
    }

}

void Df(int node)
{
    ok[node] = true;
    for(const auto& i : arb[node])
    {
        if(!ok[i])
        {
            Df(i);
            if(val[i] > 0)
                val[node] += val[i];
        }
    }
}