Cod sursa(job #544702)

Utilizator tudorsTudor Siminic tudors Data 1 martie 2011 22:54:35
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <vector>
#define N 16001
using namespace std;
long n,A[N],VIZ[N];
long a,b,smax;

FILE *f,*g;

vector <long> V[N];

void citire()
{
	long i;
	fscanf(f,"%ld",&n);
	for (i=1;i<=n;++i)
		fscanf(f,"%ld",&A[i]);
	for (i=1;i<n;++i)
	{
		fscanf(f,"%ld %ld",&a,&b);
		V[a].push_back(b);
		V[b].push_back(a);
	}
}

void df(long v)
{
	long i;
	VIZ[v]=1;
	for (i=0;i<V[v].size();++i)
		if (!VIZ[V[v][i]])
		{
			df(V[v][i]);
			if (A[V[v][i]]>0)
				A[v]+=A[V[v][i]];
		}
	if (A[v]>smax)
		smax=A[v];
}

int main()
{
	f=fopen("asmax.in","r");
	g=fopen("asmax.out","w");
	smax=-(1<<30);
	citire();
	df(1);
	fprintf(g,"%ld",smax);
	fclose(f);
	fclose(g);
	return 0;
}