Cod sursa(job #2954076)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 13 decembrie 2022 10:04:33
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;

vector<int> graf[16005];
int vf[16005];
int b[16005];
int s[16000];
int maxim = -1e9;
void dfs(int nod){
    s[nod] = b[nod];
    vf[nod] = 1;
    for(auto it: graf[nod]){
        if(vf[it] == 0){
            dfs(it);
            if(s[it] > 0){ /// il vom adauga la o subsolutie
                s[nod] += s[it];
            }
        }
    }
    maxim = max(maxim, s[nod]);
}
int main(void){
    ofstream cout("asmax.out");
    ifstream cin("asmax.in");
    int n,m;
    cin >> n;
    for(int i = 1;i<=n;i++){
        cin >> b[i];
    }
    for(int i =  1;i<=n-1;i++){
        int a,b;
        cin >> a >> b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }
    dfs(1);
    cout << maxim;
}