Cod sursa(job #628780)

Utilizator irene_mFMI Irina Iancu irene_m Data 2 noiembrie 2011 09:44:10
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <vector>
#define MaxN 16005
#define infile "asmax.in"
#define outfile "asmax.out"

using namespace std;

vector <int> G[MaxN];

int N, uz[MaxN], maxv[MaxN], cost[MaxN];

void read()
{
	int i,x,y;
	freopen(infile,"r",stdin);
	scanf("%d", &N);
	for( i = 1; i <= N; ++i)
		scanf("%d", &cost[ i ]);

	for( i = 1 ; i < N; ++i)
	{
		scanf("%d %d", &x, &y);
		G[x].push_back(y); G[y].push_back(x);
	}
	fclose(stdin);
}

void dfs(int nod)
{
	int i;

	uz[ nod ] = 1;

	for( i = 0; i < G[ nod ].size(); ++i)
		if(!uz[G[nod][i]])
		{
			dfs( G[nod][i] );
			if( cost[ G[nod][i] ] > 0)
				maxv[ nod ] += cost[ G[nod][i] ];
		}

    maxv[ nod ] += cost[ nod ];
}

void write()
{
	int i, maxc=0;
	for( i = 1; i <=N ; ++i)
		if( maxv[i] > maxc )
			maxc = maxv[ i ];

	freopen(outfile,"w",stdout);
	printf("%d\n", maxc);
	fclose(stdout);
}

int main()
{
	read();
	dfs(1);
	write();

	return 0;
}