Pagini recente » Cod sursa (job #2152373) | Cod sursa (job #2692624) | Cod sursa (job #988253) | Cod sursa (job #2735199) | Cod sursa (job #616501)
Cod sursa(job #616501)
#include <cstdio>
#include <vector>
using namespace std;
#define nmax 16010
vector <int> g[nmax];
int n, v[nmax], s[nmax], sol, u[nmax];
void df(int nod)
{
u[nod]=1;
s[nod]=v[nod];
int i, v;
for (i=0; i<g[nod].size(); i++)
{
v=g[nod][i];
if (!u[v])
{
df(v);
if (s[v]>0) s[nod]+=s[v];
if (s[nod]>sol) sol=s[nod];
}
}
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d", &n);
int i, x, y;
for (i=1; i<=n; i++) scanf("%d", &v[i]);
for (i=1; i<n; i++)
{
scanf("%d %d", &x, &y);
g[x].push_back(y);
g[y].push_back(x);
}
df(1);
printf("%d\n",sol);
}