Cod sursa(job #580463)

Utilizator gyeresihunorGyeresi Hunor gyeresihunor Data 13 aprilie 2011 08:51:35
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include "stdio.h"

int t[16010][200];
int s[16010];
int l[16010];
int n;

int asmax=-5000;

int megold(int ki);

int main()
{
	int a,b,i;
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&s[i]);
		if(s[i]>asmax)asmax=s[i];
	}
	for(i=1;i< n;i++)
	{
		scanf("%d%d",&a,&b);
		t[a][++t[a][0]]=b;
		t[b][++t[b][0]]=a;
	}
	megold(1);
	printf("%d",asmax);
	return 0;
}

int megold(int ki)
{
	int max=s[ki];
	int m;
	int i;
	l[ki]=1;
	for(i=1;i<=t[ki][0];i++)
	{
		if(!l[t[ki][i]])
		{
			m=megold(t[ki][i]);
			if(m>0)max+=m;
		}

	}
	if(max>asmax)asmax=max;
	return max;
}