Pagini recente » Cod sursa (job #1344953) | Cod sursa (job #982592) | Cod sursa (job #2585529) | Cod sursa (job #2104618) | Cod sursa (job #189621)
Cod sursa(job #189621)
#include<stdio.h>
#define DIM 20000
long int j,max,S,n,v[DIM],w[DIM],x,y,i,nr[DIM];
long 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]==0) {
w[x]=v[x];
return;
}
if (w[x]+v[x]<v[x])
w[x]=v[x];
else
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,"%ld ",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
for(i=1;i<=n-1;i++){
fscanf(f,"%ld %ld",&x,&y);
// if(x<y)
nr[x]++;
// else
nr[y]++;
}
for(i=1;i<=n;i++){
m[i] = new long int [nr[i]+10];
}
FILE *ff=fopen("asmax.in","r");
fscanf(ff,"%ld ",&n);
for(i=1;i<=n;i++)
fscanf(ff,"%ld",&v[i]);
for(i=1;i<=n;i++)
m[i][0]=0;
for(i=1;i<=n-1;i++){
fscanf(ff,"%ld %ld",&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=-100000000;
for(i=1;i<=n;i++)
if(w[i]>max)
max=w[i];
FILE *g=fopen("asmax.out","w");
fprintf(g,"%ld",max);
fclose(g);
return 0;
}