Pagini recente » Cod sursa (job #3258570) | Cod sursa (job #1432652) | Cod sursa (job #40306) | Cod sursa (job #1078984) | Cod sursa (job #2211150)
#include <bits/stdc++.h>
#define N 16001
int valnod[N];
using namespace std;
vector<int> v[N];
bool marc[N];
int msum=-1001;
int best(int k){
int q,sum=valnod[k],o;
marc[k]=1;
for(int i=0;i<v[k].size();i++){
q=v[k][i];
if(marc[q]==0)
{
o=best(q);
if(o>0)
sum+=o;
}
}
msum=max(msum,sum);
return sum;
}
int main()
{
int n,a,b,i;
FILE*fi,*fo;
fi=fopen("asmax.in","r");
fo=fopen("asmax.out","w");
fscanf(fi,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(fi,"%d",&valnod[i]);
}
for(i=0;i<n-1;i++){
fscanf(fi,"%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
best(1);
fprintf(fo,"%d",msum);
fclose(fi);
fclose(fo);
return 0;
}