Cod sursa(job #367396)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 22 noiembrie 2009 13:44:37
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <vector>
#define DIM 16005
#define INF -0x3f3f3f3f
using namespace std;
vector <int> G[DIM];
int a[DIM], i, n, x, y, visited[DIM], Rez[DIM];
int maxim = INF;
void read ()
{
	scanf ("%d\n",&n);
	for (i = 1; i <= n; i++ ) scanf ("%d",&a[i]);
	for (i = 1; i < n ; i++ )
    {
		scanf ("%d%d\n",&x,&y);
		G[x].push_back(y);
		G[y].push_back(x);
	}
}
int dfs ( int x )
{
	visited [x] = 1;
	Rez [x] = a[x];
    for (i = 0; i < G[x].size(); i++)
	{
        if ( ! visited [ G[x][i] ] ) {
            dfs ( G[x][i] );
            if ( Rez [ G[x][i] ] > 0 ) Rez [x] += Rez[ G[x][i] ];
        }
    }
return 0;
}
void solve () {
	for (i = 1; i <= n; i++) if ( maxim < Rez[i] ) maxim = Rez[i];
	printf ("%d\n", maxim);
}
int main()
{
	freopen ("asmax.in","r",stdin);
	freopen ("asmax.out","w",stdout);
	read();
	dfs(1);
	solve();
	return 0;
}