Pagini recente » Cod sursa (job #2313188) | Cod sursa (job #2121763) | Cod sursa (job #2528982) | Cod sursa (job #839604) | Cod sursa (job #1436307)
//Deresu Roberto - FMI
//Re :)
#include <fstream>
#include <vector>
#include <algorithm>
#include <climits>
#define nx 160007
using namespace std;
int N, Sol, Val[nx];
vector<int> V[nx];
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int Dfs(int node, int father)
{
int sum = Val[node];
for (vector<int>::iterator it = V[node].begin(); it != V[node].end(); it++)
{
if (*it != father)
{
int s = Dfs(*it, node);
if (s > 0) sum += s;
}
}
Sol = max (Sol, sum);
return sum;
}
int main()
{
fin >> N;
for (int i = 1; i <= N; i++)
{
fin >> Val[i];
}
for (int i = 1; i < N; i++)
{
int x, y;
fin >> x >> y;
V[x].push_back(y);
V[y].push_back(x);
}
Sol = INT_MIN;
Dfs(1, 0);
fout << Sol;
return 0;
}