Cod sursa(job #2049161)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 26 octombrie 2017 21:51:35
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#define DM 16001
#include <climits>
#include <fstream>
#include <vector>
using namespace std;

ifstream fi ("asmax.in");
ofstream fo ("asmax.out");
int n, val[DM], s[DM], a, b, mx = INT_MIN;
vector <int> v[DM];

void dfs(int nod, int p)
{
	for (int i = 0; i < v[nod].size(); ++i)
		if (v[nod][i] != p)
			dfs(v[nod][i], nod);
	if (s[nod] > 0)
		s[p]+=s[nod];
}

int main()
{
	fi >> n;
	for (int i = 1; i <= n; ++i)
	{
		fi >> val[i];
		s[i] = val[i];
	}
	for (int i = 1; i < n; ++i)
	{
		fi >> a >> b;
		v[a].push_back(b);
		v[b].push_back(a);
	}
	for (int i = 0; i < v[1].size(); ++i)
		dfs(v[1][i], 1);
	for (int i = 1; i <= n; ++i)
		mx = max(mx, s[i]);
	fo << mx;
	return 0;
}