Pagini recente » Cod sursa (job #1769351) | Cod sursa (job #1169541) | Cod sursa (job #2125745) | Cod sursa (job #2143717) | Cod sursa (job #189659)
Cod sursa(job #189659)
#include<stdio.h>
struct nod {int inf ;nod *adr;};
int viz[20000],n,x,y,i,j,v[20000];
nod *a[20000];
void DF(int x){
nod *p;
viz[x]=1;
p=a[x];
for(;p!=NULL;p=p->adr){
if(!viz[p->inf]){
DF(p->inf);
if(v[p->inf]>0)
v[x]+=v[p->inf];
}
}
}
int main(){
FILE *f=fopen("asmax.in","r");
fscanf(f,"%d ",&n);
for(i=1;i<=n;i++)
a[i]=NULL;
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
for(i=1;i<n;i++){
fscanf(f,"%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;
}
fclose(f);
DF(1);
int max=-17000000;
for(i=1;i<=n;i++)
if(v[i]>max)
max=v[i];
FILE *g=fopen("asmax.out","w");
fprintf(g,"%d",max);
fclose(g);
return 0;
}