Cod sursa(job #801892)

Utilizator cremarencodianaCremarenco Diana cremarencodiana Data 25 octombrie 2012 13:18:43
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
# include <stdio.h>
# include <vector>
using namespace std;
vector <int> v[16010];
int x,y,n,a[16010],max1,i,sum[16010];
bool sel[16010];
void getval(int x)
{
	sum[x]=a[x];
	sel[x]=true;
	for (vector <int> :: iterator it=v[x].begin(); it!=v[x].end(); it++)
		if (sel[*it]==false)
		{
			getval(*it);
			if (sum[*it]>0) sum[x]+=sum[*it];
		}
}

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