Cod sursa(job #2603035)

Utilizator CraniXortDumitrescul Eduard CraniXort Data 18 aprilie 2020 14:18:27
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda quarantine_training_1 Marime 0.85 kb
#include <bits/stdc++.h>

std::ifstream fin ("asmax.in");
std::ofstream fout ("asmax.out");

int val[16005], dp[16005];
bool viz[16005];

std::vector < int > M[160005];

void DFS (int node){
    int next, i;
    dp[node] = val[node];
    viz[node] = 1;
    for (i=0; i<M[node].size(); i++){
        next = M[node][i];
        if (viz[next] == 0){
            DFS(next);
        if (dp[next] > 0)
            dp[node] += dp[next];
        }

    }
}


int main()
{
    int n, i, a, b;
    fin >> n;
    for (i=0; i<n; i++)
        fin >> val[i];

    for (i=0; i<n-1; i++){
        fin >> a >> b;
        a --; b --;
        M[a].push_back (b);
        M[b].push_back (a);
    }

    DFS (0);

    int max = INT_MIN;
    for (i=0; i<n; i++)
        max = std::max (max, dp[i]);
    fout << max << '\n';

    return 0;
}