Cod sursa(job #3138805)

Utilizator andreea_chivuAndreea Chivu andreea_chivu Data 22 iunie 2023 14:17:14
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

#define NOD 16000
#define INF 16000001

int val_nod[NOD + 1];
vector<int> adj[NOD +1];
bool viz[NOD+1];
int rez[NOD + 1];

void dfs(int start){
    viz[start] = 1;
    rez[start] = val_nod[start];
    for(auto y: adj[start]){
        if(!viz[y]){
            dfs(y);
            if(rez[y] > 0)
                rez[start] += rez[y];
        }
    }
}

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

    int n;
    fin >> n;

    for(int i = 1; i <= n; i++){
        fin >> val_nod[i];
        rez[i] = -INF;
    }

    for(int i = 0; i < n - 1; i++){
        int a, b;
        fin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    dfs(1);

    int maxi = -INF;
    for(int i = 1; i <= n; i++){
        if(maxi < rez[i])
            maxi = rez[i];
    }
    fout << maxi;

    fin.close();
    fout.close();
    return 0;
}