Cod sursa(job #2638036)

Utilizator sebimihMihalache Sebastian sebimih Data 26 iulie 2020 15:22:43
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

vector<vector<int>> g;
vector<int> val, dp;

void df(int nod, int ant)
{
	dp[nod] = val[nod];

	for (int neigh : g[nod])
	{
		if (neigh == ant)
		{
			continue;
		}

		df(neigh, nod);
		if (dp[neigh] > 0)
		{
			dp[nod] += dp[neigh];
		}
	}
}

int main()
{
	int n;
	fin >> n;

	g.resize(n + 1);
	val.resize(n + 1);
	dp.resize(n + 1);

	for (int i = 1; i <= n; i++)
	{
		fin >> val[i];
	}

	for (int i = 1; i < n; i++)
	{
		int a, b;
		fin >> a >> b;

		g[a].push_back(b);
		g[b].push_back(a);
	}

	df(1, 0);

	int ans = -1000;
	for (int i = 1; i <= n; i++)
	{
		ans = max(ans, dp[i]);
	}
	fout << ans;
}

/*

	

*/