Cod sursa(job #535705)

Utilizator funkydvdIancu David Traian funkydvd Data 17 februarie 2011 17:33:59
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f1 ("asmax.in");
ofstream f2 ("asmax.out");
int A[16005],i,N,a,b,D[16005],S;
bool Viz[16005];
vector<int> V[16005];
void dfs(int nod)
{
    Viz[nod] = 1;
    vector<int>::iterator it;
    for ( it=V[nod].begin() ; it != V[nod].end() ; ++it )
		if ( !Viz[*it] ) dfs(*it);
    D[nod] = A[nod];
    for ( it= V[nod].begin() ; it != V[nod].end() ; ++it )
        if ( D[*it] > 0 ) D[nod] += D[*it];
    if ( D[nod] > S) S = D[nod];   
} 
int main ()
{
    f1>>N;
    for ( i = 1 ; i <= N ; ++i )   f1>>A[i];
    for ( i = 1 ; i < N ; ++i )
    {
        f1>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    S = -1<<29;
    dfs(1);
    f2<<S<<"\n";
    return 0;
}