Pagini recente » Cod sursa (job #2133656) | Cod sursa (job #1777266) | Cod sursa (job #1751232) | Cod sursa (job #981271) | Cod sursa (job #948288)
Cod sursa(job #948288)
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 16005
long n, i, a, b, rez;
long v[nmax], s[nmax];
vector <long> ma[nmax];
bool viz[nmax];
void citire()
{
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&v[i]);
for (i=1;i<=n-1;i++)
{
scanf("%ld %ld",&a,&b);
ma[a].push_back(b); ma[b].push_back(a);
}
}
void dfs(long nod)
{
vector<long> ::iterator it;
viz[nod]=1; s[nod]=v[nod];
for (it=ma[nod].begin();it!=ma[nod].end();it++)
if (!viz[*it])
{
dfs(*it);
if(s[*it]>0)
s[nod]+=s[*it];
}
if (s[nod]>rez)
rez=s[nod];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
rez=-nmax*1000;
citire();
dfs(1);
printf("%ld",rez);
return 0;
}