Cod sursa(job #2705795)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 13 februarie 2021 12:30:58
Problema Zvon Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

#define NMAX 100005
using namespace std;

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

vector<int> G[NMAX];
int dp[NMAX], lg[NMAX];

inline void COUNTA(int nod, int tata)
{
    for(auto it: G[nod])
        if(it != tata)
        {
            COUNTA(it, nod);
            lg[nod] += lg[it];
        }
    if(G[nod].size() == 1)
        lg[nod] = 1;
}

inline void DFS(int nod, int tata)
{
    vector<int> vec;
    for(auto it: G[nod])
        if(it != tata){
            DFS(it, nod);
            vec.push_back(dp[it]);
        }
    sort(vec.begin(), vec.end(), greater<int>());
    int cnt = 1;
    for(auto it: vec)
    {
        dp[nod] = max(dp[nod], it + cnt);
        ++cnt;
    }
}

int main()
{
    int t;
    fin >> t;

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

        for(int i = 1; i < n; ++i)
        {
            int x, y;
            fin >> x >> y;

            G[x].emplace_back(y);
        }

        COUNTA(1, 0);
        DFS(1, 0);

        fout << dp[1] << '\n';

        for(int i = 1; i <= n; ++i)
            dp[i] = 0, G[i].clear(), lg[i] = 0;
    }
    return 0;
}