Pagini recente » Cod sursa (job #1299670) | Cod sursa (job #2791275) | Cod sursa (job #58868) | Cod sursa (job #2040024) | Cod sursa (job #2600332)
#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];
bool viz[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];
viz[nod] = true;
for(vector<int>::iterator it = graf[nod].begin();it != graf[nod].end();++it)
if(!viz[*it])
{
DFS(*it);
if(val[*it] > 0)
val[nod] += val[*it];
}
}
void Solve()
{
DFS(1);
int maxim = -999999999;
for(int i = 1;i <= n;++i)
maxim = max(maxim, val[i]);
g<<maxim;
}
int main()
{
Read();
Solve();
return 0;
}