Pagini recente » Cod sursa (job #1949600) | Cod sursa (job #603573) | Cod sursa (job #1903436) | Cod sursa (job #1025781) | Cod sursa (job #189584)
Cod sursa(job #189584)
#include<stdio.h>
int j,max,S,n,v[20000],x,y,i,nr[20000];
int *m[20000];
int viz[20000];
void df(int x){
int i;
viz[x]=1;
for(i=1;i<=m[x][0];i++){
if(!viz[m[x][i]])
df(m[x][i]);
}
for(j=1;j<=m[x][0];j++){
S=v[m[x][j]];
if(S>0)
v[x]=S+v[x];
}
}
int main(){
FILE *f=fopen("asmax.in","r");
fscanf(f,"%d ",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
for(i=1;i<=n-1;i++){
fscanf(f,"%d %d",&x,&y);
nr[x]++;
nr[y]++;
}
for(i=1;i<=n;i++){
m[i] = new int [nr[i]+10];
}
FILE *ff=fopen("asmax.in","r");
fscanf(ff,"%d ",&n);
for(i=1;i<=n;i++)
fscanf(ff,"%d",&v[i]);
for(i=1;i<=n;i++)
m[i][0]=0;
for(i=1;i<=n-1;i++){
fscanf(ff,"%d %d",&x,&y);
m[x][0]++;
m[x][m[x][0]]=y;
m[y][0]++;
m[y][m[y][0]]=x;
}
fclose(ff);
df(1);
max=-20000000;
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;
}