Pagini recente » Cod sursa (job #828368) | Cod sursa (job #1424830) | Cod sursa (job #1887615) | Cod sursa (job #1464735) | Cod sursa (job #3199220)
#include <bits/stdc++.h>
using namespace std;
#define MAX_N 16000
int n, ans;
vector <int> dp;
vector <vector <int> > graph;
bitset <MAX_N + 1> viz;
void dfs(int node)
{
viz[node] = 1;
for(int neighbour : graph[node])
if(!viz[neighbour])
{
dfs(neighbour);
dp[node] += max(0, dp[neighbour]);
}
ans = max(ans, dp[node]);
}
int main()
{
ios_base :: sync_with_stdio(0);
cin.tie(0);
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
cin >> n;
dp.resize(n + 1);
graph.resize(n + 1);
for(int i = 1; i <= n; i ++)
cin >> dp[i];
for(int i = 1; i < n ; i ++)
{
int a, b;
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
ans = INT_MIN;
dfs(1);
cout << ans;
return 0;
}