Pagini recente » Cod sursa (job #3182906) | Cod sursa (job #2763857) | Cod sursa (job #189611) | Cod sursa (job #3254919) | Cod sursa (job #189613)
Cod sursa(job #189613)
#include<stdio.h>
#define DIM 20000
int j,max,S,n,v[DIM],w[DIM],x,y,i,nr[DIM];
int *m[DIM];
int viz[DIM];
void df(int x){
int i;
viz[x]=1;
w[x]=0;
for(i=1;i<=m[x][0];i++){
if(!viz[m[x][i]])
df(m[x][i]);
if (w[m[x][i]]>0)
w[x]+=w[m[x][i]];
}
if (w[x]+v[x]<v[x])
w[x]=v[x];
/* 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=-10000000;
for(i=1;i<=n;i++)
if(w[i]>max)
max=w[i];
FILE *g=fopen("asmax.out","w");
fprintf(g,"%d",max);
fclose(g);
return 0;
}