Cod sursa(job #2828543)

Utilizator RobertLitaLita Robert RobertLita Data 7 ianuarie 2022 16:08:20
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.85 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
#include <stack>
#include <algorithm>
#define nmax 16005
#define inf 1 << 29
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");

int cost[nmax], n, m, smax = -1000;
vector<int> la[nmax];
bool viz[nmax];

int dfs(int start)
{
    viz[start] = true;
    int s = cost[start];
    for(auto& i : la[start])
    {
        if(!viz[i])
        {
            int ssub = dfs(i);
            if(ssub + s > s) s += ssub ;
        }
    }
    if(s > smax)smax = s;
    return s;
}


int main()
{
    int x, y;
    f >> n;
    for(int i = 1; i <= n; i++)
        f >> cost[i];
    for(int i = 1; i < n; i++)
    {
        f >> x >> y;
        la[x].push_back(y);
        la[y].push_back(x);
    }
    dfs(1);
    g << smax;
    return 0;
}