Cod sursa(job #2371348)

Utilizator XDDDDariusPetean Darius XDDDDarius Data 6 martie 2019 17:16:37
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 16005
std::ifstream in("asmax.in");
std::ofstream out("asmax.out");

using namespace std;
int val[NMAX];
int dp[NMAX];
vector < int > graf[NMAX];
bool viz[NMAX];
int n;

int dfs(int nod)
{
    viz[nod] = 1;
    int sum = val[nod];
    for(auto e : graf[nod])
    {
        if(!viz[e])
            sum = max(sum ,sum + dfs(e));
    }
    dp[nod] = sum;
    return sum;
}
int x , y;
int main()
{
    in>>n;
    for(int i = 1; i<=n ; i++)
    {
        in>>val[i];
    }
    for(int i = 1; i<n ;i++)
    {
        in>>x>>y;
        graf[x].push_back(y);
        graf[y].push_back(x);
    }
    dfs(1);
    int maxim = -0x3f3f3f3f;
    for(int i = 1; i<= n; i++)
    {
        maxim = max(maxim , dp[i]);
    }
    out<<maxim;
    return 0;
}