Pagini recente » Cod sursa (job #557854) | Cod sursa (job #2836191) | Cod sursa (job #495670) | Cod sursa (job #2713476) | Cod sursa (job #2539537)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, m, maxim = -(1<<30), val[16001];
vector<int> gr[16001];
bool viz[16001];
void citire() {
fin >> n;
for (int i = 1; i <= n; i++)
fin >> val[i];
for (int i = 1; i < n; i++) {
int x, y;
fin >> x >> y;
gr[x].push_back(y);
gr[y].push_back(x);
}
}
void parcurgere(int nod) {
for (int i = 0; i < gr[nod].size(); i++)
if (!viz[gr[nod][i]]) {
viz[gr[nod][i]] = true;
parcurgere(gr[nod][i]);
val[nod] = max(val[nod], val[nod] + val[gr[nod][i]]);
}
maxim = max(maxim, val[nod]);
}
int main(int argc, const char * argv[]) {
citire();
viz[1] = true;
parcurgere(1);
fout << maxim;
}