Pagini recente » Cod sursa (job #2096719) | Cod sursa (job #740171) | Cod sursa (job #998278) | Cod sursa (job #1450973) | Cod sursa (job #50525)
Cod sursa(job #50525)
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> m[16001];
int v[16001],
vaz[16001];
int i, n, maxim, a, b;
void df(int x)
{
vaz[x]=1;
for (int i = 0; i < m[x].size(); ++ i)
if (!vaz[m[x][i]])
{
df(m[x][i]);
if (v[m[x][i]]>0)
v[x] += v[m[x][i]];
}
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for (i = 1; i <= n; ++ i)
scanf("%d",&v[i]);
for (i = 1; i < n; ++i)
{
scanf("%d %d", &a, &b);
m[a].push_back(b);
m[b].push_back(a);
}
maxim = -2000000;
df(n);
for (i = 1; i <= n; ++ i)
if (v[i]>maxim) maxim=v[i];
printf("%d\n", maxim);
return 0;
}