Cod sursa(job #562905)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 24 martie 2011 08:15:41
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <vector>
using namespace std;
#define DIM 16005
#define OO (1 << 30) - 1

ifstream fi ("asmax.in");
ofstream fo ("asmax.out");

int S[DIM], A[DIM], N, SSM = -OO, viz[DIM];
vector <int> V[DIM];



void dfs (int n)
{
	S[n] = A[n];
	viz[n] = 1;
	for (int i = 0, f; i < V[n].size(); i++)
	{
		f = V[n][i];
		if (!viz[f])
		{
			dfs (f);
			if (S[f] > 0)
				S[n] += S[f];
		}
	}
	if (SSM < S[n])
		SSM = S[n];
}

int main ()
{
	fi >> N;
	for (int i = 1; i <= N; i++)
		fi >> A[i];
	for (int i = 0, a, b; i < N - 1; i++)
	{
		fi >> a >> b;
		V[a].push_back (b);
		V[b].push_back (a);
	}
	
	dfs (1);
	
	fo << SSM;
	return 0;
}