Pagini recente » Cod sursa (job #1350173) | Cod sursa (job #1063957) | Cod sursa (job #2879877) | Cod sursa (job #1881250) | Cod sursa (job #2371348)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 16005
std::ifstream in("asmax.in");
std::ofstream out("asmax.out");
using namespace std;
int val[NMAX];
int dp[NMAX];
vector < int > graf[NMAX];
bool viz[NMAX];
int n;
int dfs(int nod)
{
viz[nod] = 1;
int sum = val[nod];
for(auto e : graf[nod])
{
if(!viz[e])
sum = max(sum ,sum + dfs(e));
}
dp[nod] = sum;
return sum;
}
int x , y;
int main()
{
in>>n;
for(int i = 1; i<=n ; i++)
{
in>>val[i];
}
for(int i = 1; i<n ;i++)
{
in>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
}
dfs(1);
int maxim = -0x3f3f3f3f;
for(int i = 1; i<= n; i++)
{
maxim = max(maxim , dp[i]);
}
out<<maxim;
return 0;
}