Cod sursa(job #2652909)

Utilizator IRadu1529Radu Ionescu IRadu1529 Data 26 septembrie 2020 13:49:31
Problema Asmax Scor 0
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.92 kb

#include <iostream>
#include <vector>
#include <fstream>
#include <deque>
#include <algorithm>

using namespace std;

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

#define d liste[el][i]

int n;

vector<vector<int>> liste(16001, vector<int>());

vector<int> noduri(16001);

vector<int> s(16001, 0);

vector<int> S(16001, 0);

vector<int> ocupat(n + 1, 0);

int stabilireSume(int el)
{
	ocupat[el] = 1;

	for (int i = 0; i < liste[el].size(); i++)
		if (ocupat[d] == 0)
		{
			s[el] += stabilireSume(d);
		}

	if (s[el] < 0)
		return 0;

	else
		return s[el];
}

int main()
{
	fin >> n;

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

	for (int i = 0; i < n - 1; i++)
	{
		int a, b;

		fin >> a >> b;

		liste[a].push_back(b);

		liste[b].push_back(a);
	}

	stabilireSume(1);

	int m = s[1];

	for (int i = 2; i <= n; i++)
		m = max(m, s[i]);

	fout << m;
}