Pagini recente » Cod sursa (job #2670137) | Cod sursa (job #542125) | Cod sursa (job #414586) | Cod sursa (job #647022) | Cod sursa (job #776646)
Cod sursa(job #776646)
#include<fstream>
#include<list>
#define inf -10000000
using namespace std;
int n,viz[16001],c[16001];
int i,j,maxim;
list<int> L[16001];
int depth(int z)
{int e,sum;
sum=c[z];
list<int>::iterator it;
for(it=L[z].begin(); it!=L[z].end(); it++)
if(viz[*it]==0)
{viz[*it]=1;
e=depth(*it);
if(e>0)
sum+=e; }
if(maxim<sum)
maxim=sum;
return sum;
}
int main()
{freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
maxim=inf;
for(i=1; i<=n; i++)
scanf("%d",&c[i]);
int a,b;
for(i=1; i<=n-1; i++)
{scanf("%d %d",&a,&b);
L[a].push_back(b);
L[b].push_back(a);}
viz[1]=1;
depth(1);
printf("%d",maxim);
return 0;}