Cod sursa(job #2952572)

Utilizator SerbanCaroleSerban Carole SerbanCarole Data 9 decembrie 2022 15:52:45
Problema Asmax Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;

ifstream cin("asmax.in");
ofstream cout("asmax.out");

// zona declarare

const int MAX = 16e3 + 1;

vector <int> g[MAX];

int dp[MAX] , n , maxim , v[MAX];

bitset <MAX> b;

// zona declarare


int dfs(int x){

    int l = g[x].size();

    b[x] = 1;

    for(int i = 0 ; i < l ; i++){

        int val = g[x][i];

        if(!b[val]){

            int y = dfs(val);

            if( y > 0 ) dp[x] += y;
        }
    }

    return dp[x];

}

int main(){

    cin >> n;

    for(int i = 1 ; i <= n ; i++){
        cin >> v[i];
        dp[i] = v[i];
    }

    n--;

    int x , y;

    while(n--){

        cin >> x >> y;

        g[x].push_back(y);
        g[y].push_back(x);
    }

    dfs(1);

    cout << dp[1];

    return 0;
}