Cod sursa(job #3370846)

Utilizator batasAndrei Batis batas Data 27 octombrie 2026 15:26:13
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
using VI = vector<int>;
using VB = vector<bool>;
using VVI = vector<VI>;

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

const int MAX_N = 5005;
int n;
VI val, dp;
VVI adj;

void ReadInput();
void Solve();
void DFS(int node, int fa);

int main()
{
	ReadInput();
	Solve();
	
	return 0;
}	

void Solve()
{
	DFS(1, 0);
	
	fout << dp[1];
}

void DFS(int node, int fa)
{
	for (int nbr : adj[node])
		if (nbr != fa)
		{
			DFS(nbr, node);
			
			if (dp[nbr] > 0)
				dp[node] += dp[nbr];
		}
}

void ReadInput()
{
	fin >> n;
	
	dp = VI(n + 1);
	adj = VVI(n + 1);
	
	for (int i = 1; i <= n; ++i)
		fin >> dp[i];
	
	int u, v;
	for (int i = 1; i < n; ++i)
	{
		fin >> u >> v;
		
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
}