Cod sursa(job #616505)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 12 octombrie 2011 19:21:52
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <vector>
using namespace std;
#define nmax 16010

vector <int> g[nmax];
int n, v[nmax], s[nmax], sol, u[nmax];

void df(int nod)
{
	u[nod]=1;
	s[nod]=v[nod];
	int i, v;
	for (i=0; i<g[nod].size(); i++)
	{
		v=g[nod][i];
		if (!u[v]) 
		{
			df(v);
			if (s[v]>0) s[nod]+=s[v];
		}
	}
	if (s[nod]>sol) sol=s[nod];
}

int main()
{
	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", &v[i]);
	for (i=1; i<n; i++) 
	{
		scanf("%d %d", &x, &y);
		g[x].push_back(y);
		g[y].push_back(x);
	}
	sol=-(1<<30);
	df(1);
	printf("%d\n",sol);
}