Pagini recente » Cod sursa (job #2291423) | Cod sursa (job #1842699) | Cod sursa (job #863748) | Cod sursa (job #871441) | Cod sursa (job #1378900)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int v[16005][16005], c[16005], viz[16005], s[16005], sol;
void dfs(int x) {
viz[x] = 1;
s[x] = c[x];
for(int i = 1; i <= v[x][0]; i++) {
int vecin = v[x][i];
if(!viz[vecin]) {
dfs(vecin);
s[x] = max(s[x], s[x] + s[vecin]);
}
}
sol = max(sol, s[x]);
}
int main()
{
int i, n, x, y;
in >> n;
for(i = 1; i <= n; i++) {
in >> c[i];
}
for(i = 1; i < n; i++) {
in >> x >> y;
v[x][0]++;
v[x][v[x][0]] = y;
v[y][0]++;
v[y][v[y][0]] = x;
}
dfs(1);
out << sol << "\n";
in.close();
out.close();
return 0;
}