Pagini recente » Cod sursa (job #734353) | Cod sursa (job #1899188) | Cod sursa (job #1621445) | Cod sursa (job #2796974) | Cod sursa (job #2115843)
#include <iostream>
#include <fstream>
#include <vector>
#define Nmax 16005
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int>v[Nmax];
int viz[Nmax], dp[Nmax], Smax, val[Nmax], n, x, y;
void dfs(int nod)
{
viz[nod] = 1;
for(int i = 0 ; i < v[nod].size(); i++)
{
if(!viz[v[nod][i]])
{
dfs(v[nod][i]);
dp[nod] += max(0, dp[v[nod][i]]);
}
}
dp[nod] += val[nod];
Smax = max(Smax, dp[nod]);
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> val[i];
for(int i = 1; i <= n - 1; i++)
{
fin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
fout << Smax;
return 0;
}