Pagini recente » Cod sursa (job #1434026) | Cod sursa (job #1019249) | Cod sursa (job #1839156) | Cod sursa (job #1860742) | Cod sursa (job #1314628)
#include <fstream>
#include <cstdio>
#include <vector>
using namespace std;
ofstream os ("asmax.out");
int N, D[16004], x, y, C[16004], S = -(1<<20);
bool B[16004];
vector <int> G[16004];
void DFS(int x);
int main()
{
freopen("asmax.in", "r", stdin);
scanf("%i", &N);
for (int i = 1; i <= N; ++i)
scanf("%i", &C[i]);
for (int i = 1, a, b; i < N; ++i)
scanf("%i%i", &a, &b), G[a].push_back(b), G[b].push_back(a);
DFS(1);
os << S;
os.close();
}
void DFS(int x)
{
D[x] = C[x];
B[x] = 1;
for (int k = 0, i; k < G[x].size(); ++k)
{
i = G[x][k];
if (B[i] == 1) continue;
DFS(i);
D[x] = max(D[x], D[x] + D[i]);
}
S = max(S, D[x]);
};