Cod sursa(job #361019)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 3 noiembrie 2009 14:24:28
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<vector>

using namespace std;

#define NMax 16005

vector <int> v[NMax];
int n,k,viz[NMax],nr,val=-200000,a,b,x[NMax];

int recur (int poz)
{
	int i,q,sum=0,knr;
    q=v[poz].size();
    viz[poz]=1;
	for(i=0;i<q;i++)
        if(viz[v[poz][i]]==0)
        {
        	knr=recur(v[poz][i]);
            if(knr>0)
                sum=sum+knr;
        }
    sum=sum+x[poz];
    if(sum>val)
        val=sum;
    return sum;
}
int main ()
{		
		long i;
        
		freopen("asmax.in" , "r" , stdin);
		freopen("asmax.out" , "w" , stdout);
		scanf("%d",&n);
        for(i=1;i<=n;i++)
            scanf("%d",&x[i]);
		for(i=1;i<=n-1;i++)
		{
			scanf("%d%d",&a,&b);
            v[a].push_back(b);
            v[b].push_back(a);
		}
        nr=recur(1);
        nr=val;
        printf("%d",nr);
        
		return 0;
}