Cod sursa(job #832443)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 10 decembrie 2012 17:33:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<cstdio>
#include<algorithm>
#include<vector>
#define INF 1000000000
using namespace std;
int n,i,k,a[16006],rez[16006],rezultat,x,y;
vector<int>v[16006];
bool viz[16006];

void parcurge(int x)
{
	viz[x]=true;
	rez[x]=a[x];
	for (int j=0;j<v[x].size();j++) if (!viz[v[x][j]])
		{
			parcurge(v[x][j]);
			rez[x]=max(rez[x],rez[v[x][j]]+rez[x]);
		}
}

int main()
{
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;i++) scanf("%d",&a[i]),rez[i]=-INF;
	for (i=1;i<=n-1;i++) scanf("%d %d",&x,&y),v[x].push_back(y),v[y].push_back(x);
	parcurge(1);
	rezultat=-INF;
	for (i=1;i<=n;i++) rezultat=max(rezultat,rez[i]);
	printf("%d\n",rezultat);
	return 0;
}