Pagini recente » Cod sursa (job #2221123) | Cod sursa (job #2132489) | Cod sursa (job #2704984) | Cod sursa (job #1616175) | Cod sursa (job #1737403)
#include<cstdio>
#include<vector>
#define NMax 16005
#define Maxim(x, y) (x >= y ? x : y)
using namespace std;
FILE *fin = freopen("asmax.in", "r", stdin);
FILE *fout = freopen("asmax.out", "w", stdout);
int N, sol = -100000000;
int v[NMax];
bool u[NMax];
vector < int > w[NMax];
void DFS(int X)
{
u[X] = 1;
for (int i = 0; i < w[X].size(); i++)
{
if (!u[w[X][i]])
{
DFS(w[X][i]);
if (v[w[X][i]] > 0)
v[X] += v[w[X][i]];
}
}
}
int main()
{
scanf("%d", &N);
for (int i = 1; i <= N; i++)
scanf("%d", &v[i]);
for (int i = 1, X, Y; i <= N - 1; i++)
{
scanf("%d%d", &X, &Y);
w[X].push_back(Y);
w[Y].push_back(X);
}
DFS(1);
for (int i = 1; i <= N; i++)
sol = Maxim(sol, v[i]);
printf("%d\n", sol);
}