Cod sursa(job #127751)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 24 ianuarie 2008 23:02:01
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

typedef struct nod
{
	int inf;
	nod *adr;
} *pNod;

pNod v[16001];

int viz[16001], n, val[16001], max, sc;

void adauga(int x, int y)
{
	pNod q;
	q = new nod;
	q -> inf = y;
	q -> adr = v[x];
	v[x] = q;
	q = new nod;
	q -> inf = x;
	q -> adr = v[y];
	v[y] = q;
}

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

	scanf("%d",&n);
	int i, x, y;
	for (i = 1; i <= n; i++) scanf("%d",&val[i]);
	for (i = 1; i < n; i++)
	{
		scanf("%d %d",&x, &y);
		adauga(x,y);
	}
}

void df(int nod)
{
	viz[nod] = 1;

	sc += val[nod];
	int suma = sc;
	if (suma > max) max = suma;
	pNod p;
	for (p = v[nod]; p != NULL; p = p -> adr)
	{
		if (!viz[p -> inf])
		{
			df(p -> inf);
		}
	}
}

int main()
{
	citire();
	int i;
	for (i = 1; i <= n; i++) { sc = 0; df(i);}
	printf("%d\n",max);
	return 0;
}