Pagini recente » Cod sursa (job #81127) | Cod sursa (job #2626509) | Cod sursa (job #2583915) | Cod sursa (job #1150761) | Cod sursa (job #580463)
Cod sursa(job #580463)
#include "stdio.h"
int t[16010][200];
int s[16010];
int l[16010];
int n;
int asmax=-5000;
int megold(int ki);
int main()
{
int a,b,i;
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&s[i]);
if(s[i]>asmax)asmax=s[i];
}
for(i=1;i< n;i++)
{
scanf("%d%d",&a,&b);
t[a][++t[a][0]]=b;
t[b][++t[b][0]]=a;
}
megold(1);
printf("%d",asmax);
return 0;
}
int megold(int ki)
{
int max=s[ki];
int m;
int i;
l[ki]=1;
for(i=1;i<=t[ki][0];i++)
{
if(!l[t[ki][i]])
{
m=megold(t[ki][i]);
if(m>0)max+=m;
}
}
if(max>asmax)asmax=max;
return max;
}