Pagini recente » Cod sursa (job #1357146) | Cod sursa (job #404522) | Cod sursa (job #915189) | Cod sursa (job #2851627) | Cod sursa (job #719130)
Cod sursa(job #719130)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
#define maxN 100010
#define PB push_back
int COST[maxN], sol[maxN], ans;
vector <int> list[maxN];
inline int cmp (int i, int j)
{
return COST[i] > COST[j];
}
void Get_Lists (int k)
{
for (int i = 0; i <= k + 1; i ++ ) list[i].clear();
for (int i = 1, a, b; i <= k; ++ i)
{
scanf ("%d %d", &a, &b);
list[a].PB (b);
}
}
void DFS (int nod)
{
COST[nod] = 1;
for (unsigned int i = 0; i < list[nod].size(); ++ i)
{
int nod2 = list[nod][i];
DFS (nod2);
COST[nod] += COST[nod2];
}
sort (list[nod].begin(), list[nod].end(), cmp);
}
void DFS2 (int nod)
{
ans = max (ans, sol[nod]);
for (unsigned int i = 0; i < list[nod].size(); ++ i)
{
int nod2 = list[nod][i];
sol[nod2] = sol[nod] + i + 1;
DFS2 (nod2);
}
}
int main()
{
freopen ("zvon.in", "r", stdin);
freopen ("zvon.out", "w", stdout);
int T;
scanf ("%d", &T);
while (T --)
{
int N;
ans = 0;
scanf ("%d", &N);
Get_Lists (N - 1);
DFS (1);
DFS2 (1);
printf ("%d\n", ans);
}
return 0;
}