Cod sursa(job #3362049)

Utilizator Tudor_TapeTapu Tudor Cristian Tudor_Tape Data 1 august 2026 10:18:08
Problema Asmax Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("asmax.in");
ofstream cout("asmax.out");
int X[16005];
int F[16005];
int S[16005];
int R[16005];

struct point {
    vector <int> V;
};
point P[16005];

void sum(int poz) {
    int maxim=0;
    for (int i=0; i<P[poz].V.size(); i++) {
        sum(P[poz].V[i]);
        if (S[P[poz].V[i]]>=0) maxim=maxim+S[P[poz].V[i]];
    }
    R[poz]=max(maxim+X[poz], maxim);
    S[poz]=maxim+X[poz];
}

int main() {
    int n;
    cin>>n;
    for (int i=1; i<=n; i++) cin>>X[i];
    for (int i=1; i<=n-1; i++) {
        int x, y;
        cin>>x>>y;
        P[x].V.push_back(y);
        F[y]=1;
    }
    for (int i=1; i<=n; i++) {
        if (F[i]==0) {
            sum(i);
            break;
        }
    }
    int maxim=0;
    for (int i=1; i<=n; i++) maxim=max(maxim, R[i]);
    cout<<maxim;
}