Pagini recente » Cod sursa (job #2675722) | Cod sursa (job #976284) | Cod sursa (job #3202909) | Cod sursa (job #565348) | Cod sursa (job #2780737)
#include<bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int INF = 2e9;
int n, ans = -INF;
int val[16100], scor[16100];
vector<vector<int>> adj;
void solve(int node, int father)
{
scor[node] = val[node];
for(auto it: adj[node])
{
if(it == father)
continue;
solve(it, node);
if(scor[it] > 0)
scor[node] += scor[it];
}
ans = max(ans, scor[node]);
}
int main()
{
in >> n;
adj.resize(n + 5);
for(int i = 1; i <= n; i++)
in >> val[i];
for(int i = 1; i < n; i++)
{
int a, b;
in >> a >> b;
adj[a].push_back(b);
adj[b].push_back(a);
}
solve(1, 0);
out << ans << '\n';
return 0;
}