Cod sursa(job #1013362)

Utilizator diana97Diana Ghinea diana97 Data 20 octombrie 2013 20:24:10
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int n;

int valoare[16001], solutie[16001];
char vizitat[16001];

vector <int> graf[16001];


void citeste ()
{
    int a, b;
    f>>n;
    for (int i=1; i<=n; i++) f>>valoare[i];
    for (int i=1; i<n; i++)
    {
        f>>a>>b;
        graf[a].push_back (b);
        graf[b].push_back (a);
    }
}


void parcurge (int nod)
{
    solutie[nod]=valoare[nod];
    vizitat[nod]=1;
    int k; k=graf[nod].size ();
    for (int i=0; i<k; i++)
    {
        if (!vizitat[graf[nod][i]])
        {
            parcurge (graf[nod][i]);
            if (solutie [graf[nod][i]]>0) solutie[nod]+=solutie[graf[nod][i]];
        }
    }
}



void sol()
{
    int rezultat=solutie[1];
    for (int i=2; i<=n; i++) if (solutie[i]>rezultat) rezultat=solutie[i];
    g<<rezultat<<'\n';
}



int main ()
{
    citeste ();
    parcurge (1);
    sol ();
    return 0;
}