Cod sursa(job #2115855)

Utilizator vancea.catalincatalin vancea.catalin Data 27 ianuarie 2018 10:54:25
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<iostream>
#include<fstream>
#include<vector>
#define DN 16050
using namespace std;
fstream fin("asmax.in",ios::in), fout("asmax.out",ios::out);
int arb[DN], dp[DN], n, maxim=-(DN*DN);
vector<int> v[DN];
void dfs(int nod, int pre)
{
	dp[nod]=arb[nod];
	for(auto x: v[nod])
	{
		if(x!=pre)
		{
			dfs(x, nod);
			dp[nod]+=max(0,dp[x]);
		}
	}
	maxim=max(maxim, dp[nod]);
}
int main()
{
	int i, a, b;
	fin>>n;
	for(i=1;i<=n;i++) fin>>arb[i];
	for(i=1;i<n;i++)
	{
		fin>>a>>b;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	dfs(1, 0);
	fout<<maxim<<"\n";
}