Cod sursa(job #342433)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 21 august 2009 18:20:00
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
#include<vector>
using namespace std;
int n,sol=-1001;
int s[1<<14];
bool viz[1<<14];
vector <int> v[1<<14];

void read()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	int i,x,y;
	for(i=1;i<=n;i++)
		scanf("%d",&s[i]);
	for(i=1;i<n;i++)
	{
		scanf("%d%d",&x,&y);
		v[x].push_back(y);
		v[y].push_back(x);
	}
}

void dfs(int x)
{
	viz[x]=1;
	int lim=v[x].size(),i;
	for(i=0;i<lim;i++)
		if(!viz[v[x][i]])
		{
			dfs(v[x][i]);
			if(s[v[x][i]]>0)
				s[x]+=s[v[x][i]];
		}
	if(s[x]>sol)
		sol=s[x];
}

int main()
{
	read();
	dfs(1);
	printf("%d\n",sol);
	return 0;
}