Cod sursa(job #3298846)

Utilizator Carnu_EmilianCarnu Emilian Carnu_Emilian Data 2 iunie 2025 17:09:26
Problema Zvon Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("zvon.in");
ofstream fcout("zvon.out");
typedef long long ll;

const int N = 1e5 + 5;
vector<vector<int>> v(N);
vector<int> s;
queue<int> q;
int t, n, a, b, d[N];

void BFS(int nod)
{
    q.push(nod);
    while (!q.empty())
    {
        s.push_back(q.front());
        for (int e : v[q.front()])
            q.push(e);
        q.pop();
    }
}

bool comp(int x, int y)
{
    return d[x] < d[y];
}

int main()
{
    fcin >> t;
    while (t--)
    {
        fcin >> n;
        for (int i = 1; i <= n; i++)
        {
            v[i].clear();
            d[i] = 0;
        }
        for (int i = 1; i < n; i++)
        {
            fcin >> a >> b;
            v[a].push_back(b);
        }
        s.clear();
        BFS(1);
        reverse(s.begin(), s.end());
        for (int e : s)
        {
            sort(v[e].begin(), v[e].end(), comp);
            reverse(v[e].begin(), v[e].end());
            int maxx = 0;
            for (int i = 0; i < v[e].size(); i++)
            {
//                cout << e << ' ' << i << ' ' << v[e][i] << ' ' << d[v[e][i]] << endl;
                maxx = max(maxx, d[v[e][i]] + i + 1);
            }
            d[e] = maxx;
        }
//        for (int i = 1; i <= n; i++)
//            cout << d[i] << ' ';
//        cout << endl;
        fcout << d[1] << '\n';
    }
    fcout.close();
    fcin.close();
    return 0;
}