Cod sursa(job #3332758)

Utilizator Victor5539Tanase Victor Victor5539 Data 9 ianuarie 2026 08:19:13
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

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

const int NMAX=16000;
int n,i,v[NMAX+5],node1,node2,sol=-1e9,j,dp[NMAX+5];
vector <int> adj[NMAX+5];
bool viz[NMAX+5];

void init()
{
    for (int i=1; i<=n; i++)
        viz[i]=0;

    for (int i=1; i<=n; i++)
        dp[i]=-1e9;
}

void dfs(int node)
{
    viz[node]=1;
    dp[node]=v[node];

    for (auto node2: adj[node])
    {
        if (!viz[node2])
        {
            dfs(node2);

            if (dp[node2]>0)
                dp[node]+=dp[node2];
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr); fout.tie(nullptr);

    fin>>n;
    for (i=1; i<=n; i++)
        fin>>v[i];

    for (i=1; i<n; i++)
    {
        fin>>node1>>node2;
        adj[node1].push_back(node2);
        adj[node2].push_back(node1);
    }

//    for (i=1; i<=n; i++)
//    {
//        init();
        dfs(1);

        for (j=1; j<=n; j++)
            sol=max(sol,dp[j]);
//    }

    fout<<sol;
    return 0;
}