Cod sursa(job #3198542)

Utilizator prod_cristiAnghel Cristi prod_cristi Data 29 ianuarie 2024 19:15:22
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

int n, m, lim[16001], dp[16001];
set <int> s[16001];
vector <int > v;

ifstream f("asmax.in");
ofstream g("asmax.out");

void citire()
{
    f >> n;
    int x;
    v.push_back(0);
    for(int i = 1;i <= n;i ++)
        f >> x, v.push_back(x);

    for(int i = 1;i <= n - 1;i ++)
    {
        int y;
        f >>x >>y;
        s[x].insert(y);
        s[y].insert(x);
    }
}

void dfs(int nod)
{
    lim[nod] = 1;
    for(auto i : s[nod])
        if(!lim[i])
            dfs(i);
}

void dinamic(int nod)
{
    for(auto i : s[nod])
        dp[nod] += v[i];

    dp[nod] += v[nod];

}
void rez()
{
    memset(dp, 0, sizeof(dp));
    for(int i = n; i >= 1;i --)
    {
        dinamic(i);
        dp[i] = max(dp[i], dp[i - 1]);
    }

    // for(int i = 1;i <= n;i ++)
    //     cout << dp[i]<<" ";
    g << *max_element(dp + 1, dp + 1 + n);
}
int main()
{
    citire();
    //dfs(1);
    rez();

    return 0;
}