Pagini recente » Cod sursa (job #1038698) | Cod sursa (job #928860) | Cod sursa (job #1380531) | Cod sursa (job #1879638) | Cod sursa (job #306350)
Cod sursa(job #306350)
#include <cstdio>
#include <vector>
#define dim 16010
using namespace std;
int n, fol[dim], c[dim];
vector<int> g[dim];
void dfs(int x)
{
vector<int>::iterator it;
fol[x]=1;
for (it=g[x].begin(); it!=g[x].end(); it++)
if (!fol[*it])
{
dfs(*it);
if (c[*it]>0) c[x]+=c[*it];
}
}
int main()
{
int i, x, y, m;
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
scanf("%d\n", &n);
for (i=1; i<=n; i++) scanf("%d ", &c[i]);
for (i=1; i<n; i++)
{
scanf("%d %d\n", &x, &y);
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
m=-1001;
for (i=1; i<=n; i++)
if (c[i]>m) m=c[i];
printf("%d\n", m);
return 0;
}