Cod sursa(job #1706091)

Utilizator preda.andreiPreda Andrei preda.andrei Data 21 mai 2016 15:39:14
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

#define N_MAX 100000

vector<int> sub[N_MAX + 1];

bool cmpDupaSubordonati(int s1, int s2){
    return sub[s1].size() < sub[s2].size();
}

void citire(int &n, ifstream &f){
    f >> n;
    for(int i = 1; i < n; ++i){
        int x, y;
        f >> x >> y;
        sub[x].push_back(y);
    }
}

int timpMinim(int i){
    if(sub[i].empty())
        return 0;

    vector<int> timpi;

    for(int s : sub[i]){
        timpi.push_back(timpMinim(s));
    }

    sort(timpi.begin(), timpi.end());

    int maxim = -1;
    int intarziere = sub[i].size();

    for(int s : timpi){
        s += intarziere;
        if(s > maxim)
            maxim = s;
        --intarziere;
    }

    return maxim;
}

int main()
{
    ios::sync_with_stdio(false);
    ifstream fin("zvon.in");
    ofstream fout("zvon.out");

    int t;
    fin >> t;
    while(t--){
        int n;
        citire(n, fin);

        fout << timpMinim(1)<< "\n";

        for(int i = 1; i <= n; ++i)
            sub[i].clear();
    }

    return 0;
}