Pagini recente » Cod sursa (job #1021780) | Cod sursa (job #2704859)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int N = 16000;
int n;
vector<int> a[N + 1];
bool viz[N + 1];
int sol[N + 1];
void dfs(int x) {
viz[x] = true;
for (auto i : a[x]) {
if (!viz[i]) {
dfs(i);
if(sol[i] > 0)
sol[x] += sol[i];
}
}
}
int main() {
in >> n;
for(int i = 1; i <= n; i++)
in >> sol[i];
for (int i = 0; i < n - 1; i++) {
int x;
int y;
in >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
int maxi = -999999999;
for (int i = 1; i <= n; i++) {
maxi = max(maxi, sol[i]);
}
out << maxi;
}