Cod sursa(job #852702)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 11 ianuarie 2013 17:00:13
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
#define NM 16010

using namespace std;

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

int N;
int i,a,b;
vector<int> G[NM];
bool Viz[NM];
int S[NM];
int ANS=-999999999;

void DF (int Node)
{
    Viz[Node]=1;

    for (vector<int>::iterator it=G[Node].begin(); it!=G[Node].end(); ++it)
        if (!Viz[*it])
        {
            DF(*it);
            if (S[*it]>0)
                S[Node]+=S[*it];
        }

    ANS=max(ANS, S[Node]);
}

int main ()
{
    f >> N;
    for (i=1; i<=N; i++)
        f >> S[i];

    for (i=1; i<N; i++)
    {
        f >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }

    DF(1);

    g << ANS << '\n';

    f.close();
    g.close();

    return 0;
}