Cod sursa(job #772106)

Utilizator alex_ovidiunituAlex Ovidiu Nitu alex_ovidiunitu Data 28 iulie 2012 12:31:03
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<iostream>
#include<fstream>
#include<algorithm>
#include<bitset>
#include<vector>
using namespace std;
vector <int> v[16005];
bitset <16005> apar;
int a[16003],n,sol=-16000*1000,b[16005];
void adanc(int nod)
{
	int i,cost=0;
	apar[nod]=1;
	for (i=0;i<v[nod].size();i++)
	{
		if (apar[v[nod][i]]==0)
		{
			adanc(v[nod][i]);
			if (a[v[nod][i]]>0)
				cost=cost+ a[v[nod][i]];
		}
	}
	b[nod]=cost+a[nod];
	sol=max(sol,b[nod]);
}
int main(void)
{
	fstream f,g;
	f.open("asmax.in",ios::in);
	g.open("asmax.out",ios::out);
	f>>n;
	int i,x,y;
	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);
	}
	adanc(1);
	g<<sol;
}