Cod sursa(job #2990844)

Utilizator RalucaioneteRalucaIonete Ralucaionete Data 8 martie 2023 17:14:40
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
///Asmax

#include<fstream>
#include<vector>
using namespace std;

ifstream cin("asmax.in");
ofstream cout("asmat.out");

const int N=16000;
int v[N+1];
int dp[N+1]; /// dp[a] suma max a unui arbore cu radacina in a
bool viz[N+1];
vector<int> g[N+1];

void dfs(int x)
{
    viz[x]=true;
    dp[x]=v[x];
    for(auto y: g[x])
    {
        if(!viz[y])
        {
            dfs(y);
            if(dp[y] > 0)
                dp[x]+=dp[y];
        }
    }
}

int main()
{
    int n;
    cin >> n;
    for(int i=1; i<=n; i++)
    {
        cin >> v[i];
    }
    for(int i=1; i<=n-1; i++)
    {
        int a, b;
        cin >> a >> b;
        g[b].push_back(a);
        g[a].push_back(b);
    }
    dfs(1);

    int maxim=-2e9;

    for(int i=1; i<=n; i++)
    {
        maxim=max(maxim, dp[i]);
    }
    cout << maxim;
    return 0;
}