Pagini recente » Cod sursa (job #417178) | Cod sursa (job #2711387) | Cod sursa (job #1893069) | Cod sursa (job #2842977) | Cod sursa (job #189581)
Cod sursa(job #189581)
#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);
if(x<y)
nr[x]++;
else
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);
if(x<y){
m[x][0]++;
m[x][m[x][0]]=y;
}
else{
m[y][0]++;
m[y][m[y][0]]=x;
}
}
fclose(ff);
df(1);
max=-100000;
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;
}