Pagini recente » Cod sursa (job #2505941) | Cod sursa (job #911549) | Cod sursa (job #2449409) | Cod sursa (job #1692435) | Cod sursa (job #361019)
Cod sursa(job #361019)
#include<stdio.h>
#include<vector>
using namespace std;
#define NMax 16005
vector <int> v[NMax];
int n,k,viz[NMax],nr,val=-200000,a,b,x[NMax];
int recur (int poz)
{
int i,q,sum=0,knr;
q=v[poz].size();
viz[poz]=1;
for(i=0;i<q;i++)
if(viz[v[poz][i]]==0)
{
knr=recur(v[poz][i]);
if(knr>0)
sum=sum+knr;
}
sum=sum+x[poz];
if(sum>val)
val=sum;
return sum;
}
int main ()
{
long i;
freopen("asmax.in" , "r" , stdin);
freopen("asmax.out" , "w" , stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
for(i=1;i<=n-1;i++)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
nr=recur(1);
nr=val;
printf("%d",nr);
return 0;
}