Cod sursa(job #587309)

Utilizator Catah15Catalin Haidau Catah15 Data 4 mai 2011 17:01:26
Problema Asmax Scor 90
Compilator cpp Status done
Runda speedt1 Marime 0.89 kb
#include <iostream>
#include <vector>

using namespace std;

#define maxN 16004
#define PB push_back

bool cont[maxN];
vector <int> lista[maxN];
long long a[maxN];


void df (int nod)
{
	cont[nod] = true;
	
	for (unsigned int i = 0; i < lista[nod].size(); ++ i)
		if ( ! cont[lista[nod][i]] )
		{
			df (lista[nod][i]);
			if (a[lista[nod][i]] > 0) a[nod] += a[lista[nod][i]];
		}
}

int main()
{
	freopen ("asmax.in", "r", stdin);
	freopen ("asmax.out", "w", stdout);
	
	int N;
	
	scanf ("%d", &N);
	
	for (int i = 1; i <= N; ++ i)
		scanf ("%lld", &a[i]);
	
	for (int i = 1; i < N; ++ i)
	{
		int a, b;
		
		scanf ("%d %d", &a, &b);
		
		lista[a]. PB (b);
		lista[b]. PB (a);
	}
	
	
	int nod = 1;
	cont[nod] = true;
	
	df (1);
	
	long long sol = 0;
	
	for (int i = 1; i <= N; ++ i)
		sol = max (sol, a[i]);
	
	printf ("%lld", sol);
	
	return 0;
}