Cod sursa(job #3240043)

Utilizator Sasha_12454Eric Paturan Sasha_12454 Data 12 august 2024 10:43:55
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

const std :: string FILENAME = "asmax";

std :: ifstream in (FILENAME + ".in");

std :: ofstream out (FILENAME + ".out");

const int NMAX = 16e3 + 5;

int n;

int x;

int y;

long long maxi;

int val[NMAX];

long long dp[NMAX];

std :: vector <int> v[NMAX];

std :: bitset <NMAX> visited;

void dfs(int nod)
{
    for(int i : v[nod])
    {
        if(visited[i] == false)
        {
            visited[i] = true;

            dfs(i);

            dp[nod] = std :: max(dp[nod], dp[nod] + dp[i]);
        }
    }

    dp[nod] = std :: max(dp[nod] + val[nod], 0ll);
}

int main()
{

    in >> n;

    for(int i = 1; i <= n; i ++)
    {
        in >> val[i];
    }

    for(int i = 0; i < n; i ++)
    {
        in >> x >> y;

        v[x].push_back(y);

        v[y].push_back(x);
    }

    visited[1] = true;

    dfs(1);

    for(int i = 1; i <= n; i ++)
    {
        maxi = std :: max(maxi, dp[i]);
    }

    out << maxi;

    return 0;
}