Cod sursa(job #2056083)

Utilizator Juve45UAIC Alexandru Ionita Juve45 Data 4 noiembrie 2017 07:03:13
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb

#include <bits/stdc++.h>

#define dbg(x) cerr<<#x": "<<x<<"\n"
#define dbg_v(x, n) do{cerr<<#x"[]: ";for(int _=0;_<n;++_)cerr<<x[_]<<" ";cerr<<'\n';}while(0)
#define dbg_ok cerr<<"OK!\n"
#define DMAX 1010
#define NMAX 1
#define MMAX 1

using namespace std;

int n, x, k, val[DMAX], use[DMAX], m, dp[DMAX], a, b;
string s;
vector<int> v[DMAX];

void dfs(int node)
{
	use[node] = 1;

	dp[node] = val[node];

 	for(int i = 0; i < v[node].size(); i++)
	{
		if(!use[v[node][i]])
		{
			dfs(v[node][i]);
			dp[node] += dp[v[node][i]];
		}
	}
	if(dp[node] < 0)
		dp[node] = 0;
}

int main()
{
	ios_base::sync_with_stdio(false);

	freopen("asmax.in", "r", stdin);
	freopen("asmax.out", "w", stdout);

	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
		cin >> val[i];
	}
	for (int i = 1; i < n; ++i)
	{
		cin >> a >> b;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	dfs(1);
	//dbg_v(dp, n + 1);
	cout << dp[1] << '\n';
}