Cod sursa(job #3357016)

Utilizator nicoleta_iancuIancu Nicoleta nicoleta_iancu Data 4 iunie 2026 23:40:39
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<vector<int>>tree;
vector<int>subTree;
vector<int>values;
int maxi = -1000;
void DFS(int crt, int parent) {
    subTree[crt] += values[crt];
    for (auto i : tree[crt]) {
        if (i != parent) {
            DFS(i, crt);
            subTree[crt] += max(0,subTree[i]);
        }
    }
    maxi = max(maxi, subTree[crt]);
}
int main()
{
    int n;
    fin >> n;
    values.resize(n);
    tree.resize(n);
    subTree.resize(n);
    int root = 0;
    for (int i = 0; i < n; ++i) {
        fin >> values[i];
    }
    int u, v;
    for (int i = 0; i < n - 1; ++i) {
        fin >> u >> v;
        --u;
        --v;
        tree[u].push_back(v);
        tree[v].push_back(u);
    } 
    DFS(0, -1);
    fout << maxi;
    return 0;
}