Cod sursa(job #2244546)

Utilizator shantih1Alex S Hill shantih1 Data 23 septembrie 2018 00:12:57
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");

int n,i,j,nr;
int v[16005],mx[16005],s[16005];
bool bl[16005];
vector<int> ad[16005];

void sgm(int nd)
{
	bl[nd]=1;
	if(nd!=1 && ad[nd].size()==1)
	{
		mx[nd]=v[nd];
		s[nd]=v[nd];
		return;
	}
	mx[nd]=-10000;
	int ss=v[nd];
	for(auto j:ad[nd])
		if(bl[j]==0)
		{
			sgm(j);
			if(s[j]>0)	ss+=s[j];
			mx[nd]=max(mx[nd], mx[j]);
		}
	mx[nd]=max(mx[nd], ss);
	s[nd]=ss;
}

int main() {
	
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>v[i];
	for(i=1;i<n;i++)
	{
		fin>>j>>nr;
		ad[j].push_back(nr);
		ad[nr].push_back(j);
	}
	sgm(1);
	fout<<mx[1]<<"\n";
}