Cod sursa(job #36816)

Utilizator IgnitionMihai Moraru Ignition Data 24 martie 2007 08:54:15
Problema Asmax Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define MN (16384)

int N, n[MN], u[MN], X;
vector<int> G[MN];

int c(int node)
{
	int i;
	for(i = 0; i < G[node].size(); ++i) if(c(G[node][i]) > 0)
		n[node] += n[G[node][i]];
	return n[node];
}

int main()
{
	int i;

	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);

	scanf("%d", &N);
	for(i = 0; i < N; ++i)
		scanf("%d", &n[i]);
	for(i = 0; i < N-1; ++i) {
		int n1, n2;
		scanf("%d %d", &n1, &n2); --n1; --n2;
		++u[n2];
		G[n1].push_back(n2);
	}

	for(i = 0; i < N; ++i) if(!u[i])
		break;
	c(i);
	for(i = 0; i < N; ++i) if(n[i] > X)
		X = n[i];
	printf("%d\n", X);

	return 0;
}