Pagini recente » Cod sursa (job #2322139) | Cod sursa (job #2457674) | Cod sursa (job #1109641) | Cod sursa (job #2209669) | Cod sursa (job #2600328)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, cost[16005];
vector<int> graf[16005];
int val[16005];
void Read()
{
f>>n;
for(int i = 1;i <= n;++i)
f>>cost[i];
int x, y;
for(int i = 1;i < n;++i)
{
f>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
}
}
void DFS(int nod)
{
val[nod] = cost[nod];
cost[nod] = 0;
for(vector<int>::iterator it = graf[nod].begin();it != graf[nod].end();++it)
if(cost[*it])
{
DFS(*it);
if(val[*it] > 0)
val[nod] += val[*it];
}
}
void Solve()
{
DFS(1);
int maxim = -9999999999999;
for(int i = 1;i <= n;++i)
maxim = max(maxim, val[i]);
g<<maxim;
}
int main()
{
Read();
Solve();
return 0;
}