Cod sursa(job #306350)

Utilizator cotofanaCotofana Cristian cotofana Data 20 aprilie 2009 14:45:59
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <vector>
#define dim 16010

using namespace std;

int n, fol[dim], c[dim];
vector<int> g[dim];

void dfs(int x)
{
	vector<int>::iterator it;
	fol[x]=1;
	for (it=g[x].begin(); it!=g[x].end(); it++)
		if (!fol[*it])
		{
			dfs(*it);
			if (c[*it]>0) c[x]+=c[*it];
		}
}

int main()
{
	int i, x, y, m;
	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);
	scanf("%d\n", &n);
	for (i=1; i<=n; i++) scanf("%d ", &c[i]);
	for (i=1; i<n; i++)
	{
		scanf("%d %d\n", &x, &y);
		g[x].push_back(y);
		g[y].push_back(x);
	}
	dfs(1);
	m=-1001;
	for (i=1; i<=n; i++)
		if (c[i]>m) m=c[i];
	printf("%d\n", m);
	return 0;
}