Cod sursa(job #2151433)

Utilizator LittleWhoFeraru Mihail LittleWho Data 4 martie 2018 14:46:48
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <bits/stdc++.h>

using namespace std;

const int jmekerie_mare = 100005;

int numaru, zvonuri;
vector<int> clanu[jmekerie_mare];
int versace[jmekerie_mare];

inline bool locu1(const int cioara1, const int cioara2) {
    return versace[cioara1] > versace[cioara2];
}

void zvoneste(int zvoner) {
    for (auto receptac: clanu[zvoner]) {
        zvoneste(receptac);

        if (clanu[zvoner].size() != 0) {
            sort(clanu[zvoner].begin(), clanu[zvoner].end(), locu1);

            for (int i = 0; i < clanu[zvoner].size(); i++) {
                versace[zvoner] = max(versace[zvoner], versace[clanu[zvoner][i]] + i + 1);
            }
        }
    }
}

int main() {
    //freopen("carici.in", "r", stdin);

    freopen("zvon.in", "r", stdin);
    freopen("zvon.out", "w", stdout);

    scanf("%d", &zvonuri);

    while (zvonuri--) {
        scanf("%d", &numaru);

        if (numaru == 1) {
            cout << "0\n";
            continue;
        }

        for (int i = 0, cioara1, cioara2; i < numaru - 1; i++) {
            scanf("%d%d", &cioara1, &cioara2);
            clanu[cioara1].push_back(cioara2);
        }

        zvoneste(1);
        cout << versace[1] << "\n";

        for (int i = 1; i <= numaru; i++) {
            clanu[i].clear();
            versace[i] = 0;
        }
    }

    return 0;
}