Pagini recente » Cod sursa (job #3166354) | Cod sursa (job #2332347) | Cod sursa (job #2969033) | Cod sursa (job #38165) | Cod sursa (job #2907899)
#include <bits/stdc++.h>
using namespace std;
#define INT_MIN -1001
int node_nbr,x,y;
vector<int> node_values;
vector<vector<int>> adj;
vector<int> costs;
vector<bool> visited;
void res(int node){
costs[node] = node_values[node];
visited[node] = 1;
for(auto next_node: adj[node]){
if(!visited[next_node]){
res(next_node);
if(costs[node] + costs[next_node] > costs[node]){
costs[node] += costs[next_node];
}
}
}
}
int main()
{
ifstream fin("asmax.in");
fin>>node_nbr;
node_values.resize(node_nbr + 1);
costs.resize(node_nbr + 1);
visited.resize(node_nbr + 1);
adj.resize(node_nbr + 1);
for(int i = 1; i <= node_nbr; i++){
fin>>x;
node_values[i] = x;
}
for(int i = 1; i <= node_nbr; i++){
fin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
fin.close();
res(1);
ofstream fout("asmax.out");
int res_cost = INT_MIN;
for(auto it: costs){
if(it > res_cost){
res_cost = it;
}
}
fout<<res_cost;
// fout<<*max_element(costs.begin(),costs.end());
fout.close();
return 0;
}