Cod sursa(job #957341)

Utilizator tibi9876Marin Tiberiu tibi9876 Data 4 iunie 2013 21:14:53
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<fstream>
#include<vector>
using namespace std;

vector <int> a[16001];
int b[16001],d[16001],i,mx,x,y,n;
bool v[16001];

void df(int x)
{
	int i;
	v[x]=1;
	d[x]=b[x];
	for (i=0;i<a[x].size();i++)
		if (v[a[x][i]]==0)
		{
			df(a[x][i]);
			if (d[a[x][i]]>0)
				d[x]=d[x]+d[a[x][i]];
		}
	if (d[x]>mx)
		mx=d[x];
}		

int main()
{
	ifstream f("asmax.in");
	ofstream g("asmax.out");
	f >> n;
	mx=-(1 << 30);
	for (i=1;i<=n;i++)
		f >> b[i];
	for (i=1;i<n;i++)
	{
		f >> x >> y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	df(1);
	g << mx;
	return 0;
}