Cod sursa(job #859214)

Utilizator raulstoinStoin Raul raulstoin Data 19 ianuarie 2013 21:02:43
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
#include<vector>
#define max(a,b) a>b?a:b
#define si short int
#define nmax 16005
using namespace std;
si v[nmax],n;
vector<int> G[nmax];
int s=-(1<<24);
bool use[nmax];
void DFS(int nod)
{
	int val;
	use[nod]=1;
	for(unsigned si i=0;i<G[nod].size();i++)
	{
		val=G[nod][i];
		if(!use[val])
		{
			DFS(val);
			if(v[val]<=0)
				continue;
			v[nod]+=v[val];
		}
	}
	s=max(s,v[nod]);
}
void read()
{
	si i,x,y;
	freopen("asmax.in","r",stdin);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	for(i=0;i<n-1;i++)
	{
		scanf("%d %d",&x,&y);
		G[x].push_back(y);
		G[y].push_back(x);
	}
}
int main()
{
	read();
	DFS(1);
	freopen("asmax.out","w",stdout);
	printf("%d\n",s);
	return 0;
}