Cod sursa(job #2822625)

Utilizator andrei81Ragman Andrei andrei81 Data 24 decembrie 2021 16:15:23
Problema Zvon Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

void dfs(vector<vector<int>>& G, vector<int>& fintime, int x)
{
    for ( int a : G[x] )
        dfs(G, fintime, a);

    int niv = 1;

    sort(G[x].begin(), G[x].end(), [&fintime](int a, int b){return (fintime[a] > fintime[b]);});

    for ( int a : G[x] )
    {
        fintime[x] = max(fintime[x], fintime[a] + niv);
        niv++;
    }
}

void solve()
{
    vector<vector<int>> G;
    vector<int> fintime;

    int n, a, b;
    fin >> n;
    G.resize(n + 5);
    fintime.resize(n + 5);

    for ( int i = 1; i < n; i++ )
    {
        fin >> a >> b;
        G[a].push_back(b);
    }

    dfs(G, fintime, 1);

    fout << fintime[1] << "\n";
}

int main()
{
    int t;
    fin >> t;
    while ( t-- )
        solve();
}