Pagini recente » Cod sursa (job #2006325) | Cod sursa (job #3178966) | Cod sursa (job #872053) | Cod sursa (job #122521) | Cod sursa (job #2361185)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int NMAX=16005;
int val[NMAX],c[NMAX],viz[NMAX];
vector < int > Ad[NMAX];
int cost=-160000005;
int n;
void read()
{
fin>>n;
for(int i=1;i<=n;++i)
{
fin>>val[i];
}
int x,y;
for(int i=1;i<n;++i)
{
fin>>x>>y;
Ad[x].push_back(y);
Ad[y].push_back(x);
}
}
void dfs(int nod)
{
viz[nod]=1;
c[nod]=val[nod];
int w;
for(int i=0;i<Ad[nod].size();++i)
{
w=Ad[nod][i];
if(viz[w]==0)
{
dfs(w);
if(c[w]>0) c[nod]+=c[w];
}
}
}
void solve()
{
dfs(1);
for(int i=1;i<=n;++i)
if(c[i]>cost) cost=c[i];
fout<<cost;
}
int main()
{
read();
solve();
return 0;
}