Pagini recente » Cod sursa (job #1529086) | Cod sursa (job #670731) | Cod sursa (job #1726879) | Cod sursa (job #193952) | Cod sursa (job #203741)
Cod sursa(job #203741)
#include<stdio.h>
#include<vector>
#define nmax 16024
using namespace std;
int sum[nmax];
int solfin;
vector< int > Q[nmax];
bool ver[nmax];
void df(const int NOD)
{
ver[NOD]=true;
vector< int >::iterator it;
for(it=Q[NOD].begin(); it!=Q[NOD].end(); ++it)
{
if( ver[*it]==false ){
df(*it);
if( sum[*it]>0 )
sum[NOD]+=sum[*it];
}
}
if( sum[NOD]>solfin )
solfin=sum[NOD];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
int N;
scanf("%d",&N);
int i,a1,a2;
for(i=1; i<=N; ++i)
scanf("%d",&sum[i]),ver[i]=false;
for(i=1; i<N; ++i){
scanf("%d%d",&a1,&a2);
Q[a1].push_back(a2);
Q[a2].push_back(a1);
}
solfin=-16000024;
df(1);
printf("%d\n",solfin);
return 0;
}