Pagini recente » Cod sursa (job #698760) | Cod sursa (job #2020021) | Cod sursa (job #1910012) | Rating daria teodorescu (dariateo) | Cod sursa (job #2741764)
#include <bits/stdc++.h>
#define E_simpla_problema ios::sync_with_stdio(0), cin.tie(0)
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> cost(16001), neighbours[16001], visited(16001);
int sum_max = -1e9;
int DFS_sum_max(int node) {
visited[node] = 1;
int sum = cost[node];
for (int i = 0; i < neighbours[node].size(); ++i) {
int dest = neighbours[node][i];
if (visited[dest] == 0) {
sum = max(sum, sum + DFS_sum_max(dest));
}
}
sum_max = max(sum_max, sum);
return sum;
}
int main() {
E_simpla_problema;
int n; fin >> n;
for (int i = 1; i <= n; ++i) {
fin >> cost[i];
}
for (int i = 1; i < n; ++i) {
int node_1, node_2; fin >> node_1 >> node_2;
neighbours[node_1].push_back(node_2);
neighbours[node_2].push_back(node_1);
}
DFS_sum_max(1);
fout << sum_max;
return 0;
}