Cod sursa(job #973147)

Utilizator predatorGigi Valoare predator Data 13 iulie 2013 16:12:21
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<fstream>
#define inf -(1<<20)
#define NM 17000
#include<vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,i,a[NM],viz[NM],x,y,sol,A[NM];
vector<int> v[NM];
void dfs(int x)
{
	viz[x]=1;
	int best=0;
	for(int i=0;i<v[x].size();++i)
		if(!viz[v[x][i]])
		{
			dfs(v[x][i]);
			if(A[v[x][i]]>0)
				best+=A[v[x][i]];
		}
	A[x]=a[x]+best;
	if(A[x]>sol)
		sol=A[x];
	viz[x]=0;
}
int main ()
{
	f>>n;
	for(i=1;i<=n;++i)
		f>>a[i];
	for(i=1;i<n;++i)
	{
		f>>x>>y;
		v[x].push_back(y);
		v[y].push_back(x);
	}
	dfs(1);
	g<<sol;
	return 0;
}