Pagini recente » Borderou de evaluare (job #1350265) | Borderou de evaluare (job #1639650) | Cod sursa (job #2262075) | Cod sursa (job #104521) | Cod sursa (job #2656454)
#include <bits/stdc++.h>
using namespace std;
int val[16005];
vector<int> adc[16005];
bool viz[16005];
int dfs(int nod)
{
viz[nod]=1;
for(int i=0;i<adc[nod].size();++i)
if(!viz[adc[nod][i]])
val[nod]+=dfs(adc[nod][i]);
if(val[nod]<0)
return 0;
return val[nod];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
int n,maxx=0;
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&val[i]);
for(int i=1;i<n;++i)
{
int x,y;
scanf("%d%d",&x,&y);
adc[x].push_back(y);
adc[y].push_back(x);
}
maxx=dfs(1);
for(int i=2;i<=n;++i)
if(val[i]>maxx)
maxx=val[i];
printf("%d",maxx);
return 0;
}