Pagini recente » Cod sursa (job #2632026) | Cod sursa (job #1240909) | Cod sursa (job #1262124) | Cod sursa (job #1088532) | Cod sursa (job #99693)
Cod sursa(job #99693)
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
#define pb push_back
#define NMAX 100010
#define MP make_pair
#define sz size()
#define ss second
#define ff first
int n;
vector<int> list[NMAX];
int niv[NMAX];
int _max = 0;
inline int MAX(int a, int b) { return (a > b) ? (a) : (b); }
void read()
{
scanf("%d", &n);
for(int i = 1, x, y; i < n; ++i)
{
scanf("%d %d\n", &x, &y);
list[x].pb(y);
}
}
void fdf(int x)
{
if(!list[x].sz)
{
niv[x] = 1;
return ;
}
for(vector<int> :: iterator it = list[x].begin(); it != list[x].end(); ++it)
{
fdf(*it);
niv[x] = MAX(niv[x], niv[*it]+1);
}
}
void df(int x, int t)
{
if(!list[x].sz)
{
_max = MAX(_max, t);
return ;
}
vector< pair<int, int> > v;
for(vector<int> :: iterator it = list[x].begin(); it != list[x].end(); ++it)
v.pb( MP(niv[*it], *it) );
sort(v.begin(), v.end());
for(int i = v.sz-1; i >= 0; --i)
{
df(v[i].ss, ++t);
}
v.clear();
}
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
int nr;
for(scanf("%d", &nr); nr; --nr)
{
read();
fdf(1);
df(1, 0);
printf("%d\n", _max);
memset(niv, 0, sizeof(niv));
for(int i = 0; i < NMAX; ++i)
list[i].clear();
_max = 0;
}
return 0;
}