Cod sursa(job #2741764)

Utilizator EusebiudistrugatorulLionel Messi Eusebiudistrugatorul Data 18 aprilie 2021 20:45:16
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#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;
}