Cod sursa(job #2289034)

Utilizator Storm_FireFox1Matei Gardus Storm_FireFox1 Data 24 noiembrie 2018 10:31:56
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 1.13 kb
#include <fstream>
#include <vector>
#define INFINITY 1000000000
#define NMAX 16000

using namespace std;

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

int n,                        // numarul de noduri
    sol = -INFINITY,          // suma maxima finala, trebuie numar mic pentru maxim
    val[NMAX + 1],            // valorile fiecarui nod. valoare[x] = valoarea nodului x
    suma[NMAX + 1],           // suma[x] = suma pentru DFS din nod x
    vizitat[NMAX + 1];        // vectorul de vizitare.
vector<int> vecini[NMAX + 1]; // vectorul de vecini. vecini[x] = vecinii nodului x

void dfs(int nod) {
    vizitat[nod] = 1;
    for (auto vecin : vecini[nod]) {
        if (!vizitat[vecin]) {
            dfs(vecin);
            suma[nod] += max(suma[vecin], 0);
        }
        suma[nod] += val[nod];
    }
}

int main() {
    int x, y;
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> x >> y;
        vecini[x].push_back(y);
        vecini[y].push_back(x);
    }
    dfs(1);
    for (int i = 1; i <= n; i++) {
        sol = max(sol, suma[i]);
    }
    fout << sol;
    return 0;
}