Cod sursa(job #3342910)

Utilizator daviddxmqStan David Andrei daviddxmq Data 26 februarie 2026 08:54:03
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
const int maxn = 16001;
int n, val[maxn];

vector<int> g[maxn];
bitset<maxn> viz;

int sumMax[maxn];

void dfs(int nod) {
    viz[nod] = true;
    sumMax[nod] = val[nod];
    for (int j = 0; j < g[nod].size(); ++j) {
        int vecin = g[nod][j];
        if(!viz[vecin]) {
            dfs(vecin);
            if (sumMax[nod] + sumMax[vecin] > sumMax[nod])
                sumMax[nod] += sumMax[vecin];
        }
    }
}

int main(){
    ifstream in("asmax.in");
    ofstream out("asmax.out");
    in >> n;
    for (int i = 1; i <= n; ++i)
        in >> val[i];
    int x, y;
    for (int i = 1; i <= n - 1; ++i) {
        in >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    dfs(1);
    int maxim = -16000005;
    for (int i = 1; i <= n; ++i)
        if (sumMax[i] > maxim)
            maxim = sumMax[i];
    out << maxim;
    return 0;
}