Pagini recente » Cod sursa (job #1195003) | Cod sursa (job #2904982) | Cod sursa (job #2496407) | Cod sursa (job #2608818) | Cod sursa (job #1210790)
#include <cstdio>
#include <vector>
using namespace std;
int n,val[16005],mx=-2000000069;
vector<int> g[16005];
bool v[16005];
void dfs(int nod)
{
v[nod]=1;
for(size_t i=0;i<g[nod].size();++i)
{
int vecin=g[nod][i];
if(v[vecin])
continue;
dfs(vecin);
if(val[vecin]>0)
val[nod]+=val[vecin];
}
if(val[nod]>mx)
mx=val[nod];
}
int main()
{
int i,j;
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",val+i);
while(--n)
{
scanf("%d%d",&i,&j);
g[i].push_back(j);
g[j].push_back(i);
}
dfs(1);
printf("%d\n",mx);
return 0;
}