Pagini recente » Cod sursa (job #819442) | Cod sursa (job #1398903) | Cod sursa (job #1978640) | Cod sursa (job #624195) | Cod sursa (job #2749448)
#include <fstream>
#include <vector>
#include <bitset>
#include <climits>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
#define NMAX 16005
int n, val[NMAX];
vector<int> G[NMAX];
bitset<NMAX> viz;
void citire() {
f >> n;
for (int i = 1; i <= n; ++i)
f >> val[i];
int nod1, nod2;
for (int i = 1; i < n; ++i) {
f >> nod1 >> nod2;
G[nod1].push_back(nod2);
G[nod2].push_back(nod1);
}
}
void DFS(int nod) {
viz[nod] = true;
for (auto &nod2:G[nod]) {
if (!viz[nod2]) {
DFS(nod2);
if (val[nod2] > 0)
val[nod] += val[nod2];
}
}
}
void afisare() {
int maxi = INT_MIN;
for (int i = 1; i <= n; ++i)
maxi = max(maxi, val[i]);
g << maxi;
}
int main() {
citire();
DFS(1);
afisare();
return 0;
}