Cod sursa(job #362354)

Utilizator iulia609fara nume iulia609 Data 9 noiembrie 2009 02:19:11
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#include<vector>
#define NMAX 16001
using namespace std;

vector<int>A[NMAX];

int N, c[NMAX], R[NMAX], U[NMAX];

void DFS(int nod) 
{ int i; 

	R[nod] = c[nod];
	U[nod] = 1; 
	 
	for(i = 0; i < A[nod].size(); i++) 
		if(U[A[nod][i]] == 0) 
			{
				DFS(A[nod][i]); 
				if(R[A[nod][i]] > 0)
					R[nod] += R[A[nod][i]];
			}
}


int main()
{ int i,a,b,maxim;

	freopen("asmax.in", "r",stdin);
	freopen("asmax.out", "w", stdout);
	
	scanf("%d", &N);
	for(i = 1; i <= N; i++)
		scanf("%d", &c[i]);
	
	for(i = 1; i <= N-1; i++)
	{
		scanf("%d%d", &a, &b);
		A[a].push_back(b);
		A[b].push_back(a);
	}
	
	DFS(1);
	
	maxim = -2000;
	for(i = 1; i <= N; i++)
		if(R[i] > maxim) maxim = R[i];
	
	printf("%d\n", maxim);
}