Cod sursa(job #2772012)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 30 august 2021 14:23:16
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n, rez, v[16005];
bool viz[16005];
vector <int> g[16005];

void dfs(int nod) {
    viz[nod] = true;
    for (int i = 0; i < g[nod].size(); ++i) {
        int next = g[nod][i];
        if (!viz[next]) {
            dfs(next);
            if (v[next] > 0)
                v[nod] += v[next];
        }
    }
    rez = max(rez, v[nod]);
    return;
}

int main() {
    fin >> n;
    for (int i = 1; i <= n; ++i)
        fin >> v[i];
    for (int i = 1, x, y; i < n; ++i) {
        fin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    int rad = 1;
    for (int i = 1; i <= n; ++i)
        if (g[i].size() == 1)
            rad = i;
    dfs(rad);
    fout << rez;
    return 0;
}