Cod sursa(job #468927)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 5 iulie 2010 14:20:48
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#include <vector>
#define nm 16002

using namespace std;

vector<int> v[nm];
int n, a[nm], c[nm], viz[nm], sol = -1000;

void dfs(int nod)
{
	int i, temp=0;
	viz[nod]=1;
	for(i=0; i<v[nod].size(); ++i)
	{
		if(!viz[v[nod][i]])
		{
			dfs(v[nod][i]);
			if(c[v[nod][i]]>0)
				temp+=c[v[nod][i]];
		}
	}
	c[nod]=a[nod]+temp;
	if(sol<c[nod])
		sol=c[nod];
}

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