Pagini recente » Cod sursa (job #769795) | Cod sursa (job #2526919) | Cod sursa (job #1326401) | Cod sursa (job #670774) | Cod sursa (job #3280497)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int Sum_Max(int node, int parent, vector<int> &arr, vector<vector<int>> &graph) {
int val = arr[node];
for(auto neighbor : graph[node]) {
if(neighbor != parent) {
val = max(val, Sum_Max(neighbor, node, arr, graph)+val);
}
}
return val;
}
int main() {
int N;
fin >> N;
vector<int> arr(N+1);
for(int i=1; i<=N; i++)
fin >> arr[i];
vector<vector<int>> graph(N+1, vector<int>());
for(int i=1; i<=N; i++) {
int x,y;
fin >> x >> y;
graph[x].push_back(y);
graph[y].push_back(x);
}
fout << Sum_Max(1, -1, arr, graph);
return 0;
}