Pagini recente » Cod sursa (job #688265) | Cod sursa (job #2709908) | Cod sursa (job #2187672) | Cod sursa (job #885426) | Cod sursa (job #50961)
Cod sursa(job #50961)
#include <stdio.h>
#define NM 400
int ad[NM][NM],n,i,x,y,nr[NM];
char viz[NM];
long long a[NM],max=-2000000000;
void sume (int k)
{ long long val;
int i;
viz[k]=1;
for (i=0;i<nr[k];i++)
if (viz[ad[k][i]]==0)
{ sume(ad[k][i]);
val=a[ad[k][i]];
if (val>0)
a[k]+=val;
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("asmax.in","rt");
fout=fopen("asmax.out","wt");
fscanf(fin,"%d ",&n);
for (i=0;i<n;i++)
fscanf(fin,"%lld ",&a[i]);
for (i=0;i<n-1;i++)
{ fscanf(fin,"%d %d",&x,&y);
x--;
y--;
ad[x][nr[x]++]=y;
ad[y][nr[y]++]=x;
}
sume(0);
for (i=0;i<n;i++)
if (a[i]>max)
max=a[i];
fprintf(fout,"%lld\n",max);
return 0;
}