Cod sursa(job #644582)

Utilizator iulishorIulian Popescu iulishor Data 7 decembrie 2011 00:21:07
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#include<vector>
#define inf -0x3f3f3f3f
#include<algorithm>
using namespace std;
vector<vector<int> > mat(16001);
vector<int> sol(16001),cost(16001),viz(16001);
int n;
void dfs(int x)
{
	viz[x]=1;
	sol[x]+=cost[x];
	for(int i=0;i<mat[x].size();++i)
		if(!viz[mat[x][i]])
		{
			viz[mat[x][i]]=1;
			dfs(mat[x][i]);
			if(sol[mat[x][i]]>=0)
				sol[x]+=sol[mat[x][i]]; 
		} 
}
int main()
{
	ifstream f("asmax.in");
	ofstream g("asmax.out");
	f>>n;
	for(int i=1;i<=n;++i)
		f>>cost[i];
	for(int i=1;i<n;++i)
	{
		int x,y;
		f>>x>>y;
		mat[x].push_back(y);
		mat[y].push_back(x);
	}
	dfs(1);
	int maxim=inf;
	for(int i=1;i<=n;++i)
		maxim=max(maxim,sol[i]);
	g<<maxim;
}