Cod sursa(job #2835563)

Utilizator Andrei_Tud1Andrei Tudorache Andrei_Tud1 Data 18 ianuarie 2022 21:29:55
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <iostream>
#include <vector>
#define DIM 16010

using namespace std;

vector<int> L[DIM];
int v[DIM];
int S[DIM];
int maximul;
int val[DIM];

int i, j, n, x, y, k;


int maxim(int a, int b){
    if (a > b)
        return a;
    else
        return b;
}

void dfs(int nod) {
    v[nod] = 1;
    S[nod] = val[nod];

    for (int i=0;i<L[nod].size(); i++)
        if (v[ L[nod][i]  ] == 0) {
            dfs(L[nod][i]);
            if(S[L[nod][i]] > 0)
                S[nod] += S[L[nod][i]];

            if(S[nod]>maximul)
                maximul = S[nod];
        }
}

int main() {
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");
    fin>>n;
    for(i = 1; i <= n; i++)
        fin >> val[i];
    maximul = val[1];

    for (i=1;i<n;i++) {
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }

    dfs(1);

    fout << maximul;
    return 0;
}