Cod sursa(job #36563)

Utilizator damaDamaschin Mihai dama Data 23 martie 2007 18:38:09
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <vector>

using namespace std;

vector<int> v[16384];
int n, a[16384], c[16384], used[16384], sol = -1000;

void dfs(int nod);

int main()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);

	int i, x, y;

	scanf("%d", &n);

	for(i = 1; i <= n; ++i)
	{
		scanf("%d", &a[i]);
	}

	for(i = 1; i < n; ++i)
	{
		scanf("%d%d", &x, &y);
		v[x].push_back(y);
		v[y].push_back(x);
	}

	dfs(1);

	printf("%d\n", sol);
	return 0;
}


void dfs(int nod)
{
	int i, temp = 0;
	used[nod] = 1;
	for(i = 0; i < v[nod].size(); ++i)
	{
		if(!used[v[nod][i]])
		{
			dfs(v[nod][i]);
			if(c[v[nod][i]] > 0)
				temp += c[v[nod][i]];
		}
	}
	c[nod] = a[nod] + temp;
	if(sol < c[nod])
		sol = c[nod];
}