Cod sursa(job #419666)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 17 martie 2010 19:54:39
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> c[16001];

int v[16001],a[16001],maxim=-1001;

int dfs(int nod)
{
	int s=a[nod],len=c[nod].size(),x,i;
	for (i=0;i<len;i++)
		if (!v[c[nod][i]])
		{
			v[c[nod][i]]=1;
			x=dfs(c[nod][i]);
			if (x>0) s+=x;
		}
	if (s>maxim) maxim=s;
	return s;
}

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