Cod sursa(job #2702999)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 6 februarie 2021 16:17:47
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

const int maxn=16005;
vector <int> G[maxn];
int nr_noduri, dp[maxn];
bool vizitat[maxn];

void citire()
{
    fin>>nr_noduri;
    for(int i=1; i<=nr_noduri; i++)
    {
        fin>>dp[i];
    }
    for(int i=1; i<nr_noduri; i++)
    {
        int a,b;
        fin>>a>>b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
}

void dfs(int curent)
{
    vizitat[curent]=1;
    for(int i=0; i<G[curent].size(); i++)
    {
        int vecin=G[curent][i];
        if(vizitat[vecin])
            continue;
        dfs(vecin);
        if(dp[vecin] > 0)
            dp[curent]+=dp[vecin];
    }
}

void solve()
{
    int ans=0;
    dfs(1);
    for(int i=1; i<=nr_noduri; i++)
    {
        if(dp[i] > ans)
            ans=dp[i];
    }
    fout<<ans;
}

int main()
{
    citire();
    solve();
    return 0;
}