Pagini recente » Cod sursa (job #758829) | Cod sursa (job #851691) | Cod sursa (job #2053100) | Cod sursa (job #2478892) | Cod sursa (job #206565)
Cod sursa(job #206565)
#include<stdio.h>
#include<string.h>
struct nod{
int inf;
nod *adr;
};
int s[20000],n,x,y,i,j,v[20000];
nod *a[20000];
void funct(int x){
nod *p;
s[x]=1;
p=a[x];
for(;p!=NULL;p=p->adr){
if(!s[p->inf]){
funct(p->inf);
if(v[p->inf]>0)
v[x]+=v[p->inf];
}
}
}
int main(){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
a[i]=NULL;
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<n;i++){
scanf("%d%d",&x,&y);
nod *p=new nod;
p->inf=y;
p->adr=a[x];
a[x]=p;
nod *q=new nod;
q->inf=x;
q->adr=a[y];
a[y]=q;
}
funct(1);
int max=-1700000;
for(i=1;i<=n;i++)
if(v[i]>max)
max=v[i];
printf("%d",max);
fclose(stdin);
fclose(stdout);
return 0;
}