Pagini recente » Cod sursa (job #1193442) | Cod sursa (job #2038395) | Cod sursa (job #1516653) | Cod sursa (job #2755466) | Cod sursa (job #2373505)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> v[16005];
int dp[16005], mx;
int n;
void citire()
{
in >> n;
for(int i = 1; i <= n; i ++)
in >> dp[i];
for(int i = 1; i < n; i++)
{
int a, b;
in >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
}
void dfs(int nod, int tata)
{
for(int i = 0; i < v[nod].size(); i ++)
{
int nnod = v[nod][i];
if(nnod != tata)
{
dfs(nnod, nod);
if(dp[nnod] > 0)
dp[nod] += dp[nnod];
}
}
mx = max(mx, dp[nod]);
}
int main()
{
citire();
dfs(1, 0);
out << mx;
return 0;
}