Cod sursa(job #2539748)

Utilizator trifangrobertRobert Trifan trifangrobert Data 6 februarie 2020 11:28:50
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 16006;
int N, cost[NMAX];
vector <int> graph[NMAX];
int dp[NMAX], answer;

void dfs(int node, int father)
{
    dp[node] = cost[node];
    for (auto& x : graph[node])
        if (x != father)
        {
            dfs(x, node);
            if (dp[x] > 0)
                dp[node] += dp[x];
        }
    answer = max(answer, dp[node]);
}

int main()
{
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");
    fin >> N;
    answer = -2e9;
    for (int i = 1;i <= N;++i)
    {
        fin >> cost[i];
        answer = max(answer, cost[i]);
    }
    for (int i = 1;i < N;++i)
    {
        int u, v;
        fin >> u >> v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    dfs(1, 0);
    fout << answer << "\n";
    fin.close();
    fout.close();
    return 0;
}