Pagini recente » Cod sursa (job #1463182) | Cod sursa (job #566316) | Cod sursa (job #244687) | Cod sursa (job #1091957) | Cod sursa (job #2539295)
#include <iostream>
#include <fstream>
#include <bitset>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, maxx = -2000000000;
int v[16001];
bitset<16001> f;
vector<int> nod[16001];
void readAndSet() {
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
for (int i = 1; i < n; i++) {
int a, b;
fin >> a >> b;
nod[a].push_back(b);
nod[b].push_back(a);
}
}
void dfs(int i) {
for (int j : nod[i])
if (!f[j]) {
f[j] = true;
dfs(j);
v[i] = max(v[i], v[i] + v[j]);
}
maxx = max(maxx, v[i]);
}
int main() {
readAndSet();
f[1] = true;
dfs(1);
fout << maxx;
return 0;
}