Cod sursa(job #3163904)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 1 noiembrie 2023 16:57:51
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int maxN = 16005;
vector<int> G[maxN];
int n, v[maxN], ans;

int dfs(int nod, int tata) {
    int best = v[nod];
    for(int vecin : G[nod]) {
        if(vecin == tata)
            continue;
    
        int val = dfs(vecin, nod);
        if(val > 0)
            best += val;
    }

    ans = max(ans, best);
    return best;
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    for(int i = 1; i < n; i++) {
        int x, y;
        fin >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }

    ans = -1e9;
    dfs(1, 0);
    fout << ans << '\n';
    return 0;
}