Cod sursa(job #3154884)

Utilizator iulia_morariuIulia Ela Morariu iulia_morariu Data 6 octombrie 2023 18:21:54
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int v[16001];
vector <vector <int>> l(16001);
int s[16001];

void dfs(int nod, int f){
    s[nod] = v[nod];

    for(int i = 0; i < l[nod].size(); i++){
        if(l[nod][i] == f) continue;
        dfs( l[nod][i], nod );
        if(s[ l[nod][i] ] > 0) s[nod] += s[ l[nod][i] ];
    }
}

int main(){
    cin.tie(0);ios::sync_with_stdio(0);

    //1.

    //2.
    fin >> n;

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

    dfs(1, 0);

    int maxi = INT_MIN;
    for(int i = 1; i <= n; i++) maxi = max(maxi, s[i]);
    fout << maxi << endl;

    return 0;
}