Pagini recente » Cod sursa (job #144931) | Cod sursa (job #1333702) | Cod sursa (job #1983921) | Cod sursa (job #1666686) | Cod sursa (job #129255)
Cod sursa(job #129255)
#include<stdio.h>
int a[16000][2],n,v[16001],s[16001],i,viz[16001],max;
int df(int vf)
{viz[vf]=1;
s[vf]=v[vf];
int val;
for(int i=1;i<n;i++)
if(a[i][0]==vf){
if(!viz[a[i][1]])
{val=df(a[i][1]);
if(val>0) s[vf]=s[vf]+val;}}
else
if(a[i][1]==vf){
if(!viz[a[i][0]])
{val=df(a[i][0]);
if(val>0) s[vf]=s[vf]+val;}}
return s[vf];}
int main()
{freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&v[i]);
for(i=1;i<n;i++) scanf("%d %d",&a[i][0],&a[i][1]);
df(1);
max=s[1];
for(i=2;i<=n;i++)
if(max<s[i]) max=s[i];
printf("%d\n",max);
return 0;}