Cod sursa(job #203741)

Utilizator alexeiIacob Radu alexei Data 19 august 2008 10:51:52
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
#include<vector>
#define nmax 16024
using namespace std;
int sum[nmax];
int solfin;
vector< int > Q[nmax];
bool ver[nmax];

void df(const int NOD)
{    
     ver[NOD]=true;
     vector< int >::iterator it;
     
     for(it=Q[NOD].begin(); it!=Q[NOD].end(); ++it)
     {                    
                          if( ver[*it]==false ){
                          df(*it); 
                          
                          if( sum[*it]>0 )
                          sum[NOD]+=sum[*it];
                          }
     
     }
     
     if( sum[NOD]>solfin )
     solfin=sum[NOD];
       
}     

int main()
{
 freopen("asmax.in","r",stdin);
 freopen("asmax.out","w",stdout);
 
 int N;
 scanf("%d",&N);
 
 int i,a1,a2;
 
 for(i=1; i<=N; ++i)
 scanf("%d",&sum[i]),ver[i]=false;
  
 for(i=1; i<N; ++i){
 scanf("%d%d",&a1,&a2);
 Q[a1].push_back(a2);
 Q[a2].push_back(a1);
 }
 solfin=-16000024;
 df(1);
    
 printf("%d\n",solfin);   
 
    return 0;
}