Pagini recente » Cod sursa (job #3168952) | Cod sursa (job #493426) | Cod sursa (job #204356) | Cod sursa (job #3292699) | Cod sursa (job #1887665)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 16005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> a[nmax];
int v[nmax], viz[nmax], dp[nmax];
int n;
void citire()
{
f>>n;
for(int i=1; i<=n; ++i)
{
f>>v[i];
}
int x, y;
for(int i=1; i<n; ++i)
{
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
}
void DFS(int nod, int father)
{
viz[nod]=1;
dp[nod]=v[nod];
for(auto it:a[nod])
{
if(it==father) continue;
DFS(it, nod);
dp[nod]=max(dp[nod], dp[nod]+dp[it]);
}
viz[nod]=0;
}
int main()
{
citire();
DFS(1, 0);
int sol=dp[1];
for(int i=2; i<=n; i++)
{
sol=max(sol, dp[i]);
}
g<<sol;
return 0;
}