Cod sursa(job #1210790)

Utilizator vladrochianVlad Rochian vladrochian Data 21 iulie 2014 08:08:22
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#include <vector>
using namespace std;
int n,val[16005],mx=-2000000069;
vector<int> g[16005];
bool v[16005];
void dfs(int nod)
{
	v[nod]=1;
	for(size_t i=0;i<g[nod].size();++i)
	{
		int vecin=g[nod][i];
		if(v[vecin])
			continue;
		dfs(vecin);
		if(val[vecin]>0)
			val[nod]+=val[vecin];
	}
	if(val[nod]>mx)
		mx=val[nod];
}
int main()
{
	int i,j;
	freopen("asmax.in","r",stdin);
	freopen("asmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",val+i);
	while(--n)
	{
		scanf("%d%d",&i,&j);
		g[i].push_back(j);
		g[j].push_back(i);
	}
	dfs(1);
	printf("%d\n",mx);
	return 0;
}