Cod sursa(job #50525)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 7 aprilie 2007 20:40:30
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <vector>
using namespace std;

vector <int> m[16001];
int v[16001],
    vaz[16001];
int i, n, maxim, a, b;

void df(int x)
{
	vaz[x]=1;
	for (int i = 0; i < m[x].size(); ++ i)
	if (!vaz[m[x][i]])
	{
		df(m[x][i]);
		if (v[m[x][i]]>0)
			v[x] += v[m[x][i]];
	}
}

int main()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for (i = 1; i <= n; ++ i)
		scanf("%d",&v[i]);
	for (i = 1; i < n; ++i)
	{
		scanf("%d %d", &a, &b);
		m[a].push_back(b);
		m[b].push_back(a);
	}
	maxim = -2000000;
	df(n);
	for (i = 1; i <= n; ++ i)
		if (v[i]>maxim) maxim=v[i];
	printf("%d\n", maxim);
	return 0;
}