Pagini recente » Cod sursa (job #1602566) | Cod sursa (job #1550045) | Cod sursa (job #2356640) | Cod sursa (job #165084) | Cod sursa (job #1604840)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
const int nmax=16005;
int val[nmax],i,x,y,maxim,ayy,n;
vector <int> a[nmax];
bool viz[nmax];
int dfs (int nod)
{
int aux,vecini,h,sumac=0;
vecini=a[nod].size();
viz[nod]=1;
for (h=0;h<vecini;h++)
{
if (viz[a[nod][h]]==0)
{
aux=dfs(a[nod][h]);
if (aux>0);
sumac+=aux;
}
}
sumac+=val[nod];
if (sumac>maxim)
maxim=sumac;
if (sumac>0)
return sumac;
return 0;
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>val[i];
for (i=1;i<n;i++)
{
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
ayy=dfs(1);
g<<maxim;
return 0;
}