Cod sursa(job #2830290)

Utilizator Theo_FurtunaTheodor-Florentin Furtuna Theo_Furtuna Data 9 ianuarie 2022 18:22:04
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int noduri, maxim, a, b;
vector <int> adiacenta[16001], valori, vizitat;
void dfs(int x)
{
	vizitat[x] = 1;
	for (int i = 0; i < adiacenta[x].size(); i++)
	if (!vizitat[adiacenta[x][i]])
	{
		dfs(adiacenta[x][i]);
		if (valori[adiacenta[x][i]] > 0)
			valori[x] += valori[adiacenta[x][i]];
	}
}
int main()
{
	in >> noduri;
	valori.resize(noduri + 1);
	vizitat.resize(noduri + 1);
	for (int i = 1; i <= noduri; i++)
    {
        in >> valori[i];
        vizitat[i] = 0;
    }
	for (int i = 1; i < noduri; i++)
	{
		in >> a >> b;
		adiacenta[a].push_back(b);
		adiacenta[b].push_back(a);
	}
	dfs(noduri);
	for (int i = 1; i <= noduri; i++)
		if (valori[i] > maxim)
            maxim = valori[i];
	out << maxim << "\n";
	return 0;
}