Cod sursa(job #601222)

Utilizator ELHoriaHoria Cretescu ELHoria Data 5 iulie 2011 14:57:33
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <vector>

using namespace std;

const int NMAX = 16001;

bool ok[NMAX];
vector<int> G[NMAX];
int n , v[NMAX] , s[NMAX] , ans = -(int)2e9;

void dfs(int node)
{
	ok[node] = true;
	s[node] = v[node];
	for(int i=0;i<(int)G[node].size();++i)
		if(ok[G[node][i]]==false)
		{
			dfs(G[node][i]);
			s[node]=max(s[node],s[node] + s[G[node][i]]);
		}
}


int main()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;++i) 	scanf("%d",&v[i]);
	for(int i=1,x,y;i<n;++i)
			scanf("%d %d",&x,&y) , G[x].push_back(y) , G[y].push_back(x);
	dfs(1);
	for(int i=1;i<=n;++i)
		ans = max(ans,s[i]);
	printf("%d",ans);
	return 0;
}