Cod sursa(job #624541)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 22 octombrie 2011 14:43:38
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<vector>
using namespace std;
short n,cost[16010];
vector <short> G[16010];
bool viz[16010];
int best[16010];

void Citire()
{
	short i,x,y;
	ifstream fin("asmax.in");
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>cost[i];
	for(i=1;i<n;i++)
	{
		fin>>x>>y;
		G[x].push_back(y);
		G[y].push_back(x);
	}
	fin.close();
}

void DFS(short x)
{
	vector <short>::iterator it;
	viz[x]=true;
	best[x]=cost[x];
	for(it=G[x].begin();it!=G[x].end();it++)
	{
		if(!viz[*it])
		{
			DFS(*it);
			if(best[*it]>0)
				best[x]+=best[*it];
		}
	}
}

void Afisare()
{
	int i,maxim=-2000000000;
	for(i=1;i<=n;i++)
		maxim=max(maxim,best[i]);
	ofstream fout("asmax.out");
	fout<<maxim<<"\n";
	fout.close();
}

int main()
{
	Citire();
	DFS(1);
	Afisare();
	return 0;
}