Pagini recente » Cod sursa (job #2143278) | Cod sursa (job #1713265) | Cod sursa (job #2211735) | Cod sursa (job #1547002) | Cod sursa (job #2834563)
#include <bits/stdc++.h>
#define DIM 16005
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, ans = -INF, sum[DIM], cost[DIM];
bitset <DIM> v;
vector <int> edges[DIM];
void dfs(int node)
{
v[node] = 1;
sum[node] = cost[node];
for (auto child: edges[node])
if (!v[child])
{
dfs(child);
sum[node] = max(sum[node], sum[node] + sum[child]);
}
ans = max(sum[node], ans);
}
int main()
{
f >> n;
for (int i = 1; i <= n; i++)
f >> cost[i];
for (int i = 1; i < n; i++)
{
int x, y;
f >> x >> y;
edges[x].push_back(y);
edges[y].push_back(x);
}
dfs(1);
g << ans;
return 0;
}