Cod sursa(job #2829163)

Utilizator tandiToader Andi tandi Data 8 ianuarie 2022 12:57:16
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

vector<vector<int>> adiacenta;
int valoare[16002], vizitat[16002], maxim = -1002;

void dfs(int nod)
{
	vizitat[nod]++;

	for (int i = 0; i < adiacenta[nod].size(); i++)
	{
		if (vizitat[i] == 0)
		{
			vizitat[i]++;
			dfs(i);
			if (valoare[nod] < valoare[nod] + valoare[i])
				valoare[nod] += valoare[i];
		}
		if (valoare[nod] > maxim)
			maxim = valoare[nod];
	}
}

int main()
{
	int n;
	ifstream in("asmax.in");
	in >> n;
	for (int i = 1; i <= n; i++)
		in >> valoare[i];
	adiacenta.resize(n + 1);
	for (int i = 1; i <= n; i++)
	{
		int tata, fiu;
		in >> tata >> fiu;
		adiacenta[tata].push_back(fiu);
		adiacenta[fiu].push_back(tata);
	}
	in.close();

	dfs(1);

	ofstream out("asmax.out");
	out << maxim;
	out.close();

}