Cod sursa(job #1704942)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 19 mai 2016 17:24:37
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
using namespace std;

int cost[20000];

int dfc(int nod, int tata);
int maxim = -1000000;
vector<int> adia[20000];

int main()
{
    ifstream in("asmax.in");
    int n;
    in >> n;
    for (int i = 1; i <= n; i++) {
        in >> cost[i];
    }
    int a, b;
    for (int i = 1; i < n; i++) {
        in >> a >> b;
        adia[a].push_back(b);
        adia[b].push_back(a);
    }
    dfc(1, -1);
    ofstream out("asmax.out");
    out << maxim;
    in.close();
    out.close();
    return 0;
}

int dfc(int nod, int tata) {
    int best = cost[nod];
    for (auto i : adia[nod]) {
        if (i == tata)
            continue;
        int x = dfc(i, nod);
        if (x > 0)
            best += x;
    }
    if (best > maxim)
        maxim = best;
    return best;
}