Pagini recente » Cod sursa (job #1947321) | Cod sursa (job #574042) | Cod sursa (job #1377353) | Cod sursa (job #2077360) | Cod sursa (job #106492)
Cod sursa(job #106492)
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
#define in "zvon.in"
#define out "zvon.out"
#define dim 100067
int T, N, Q;
int Vec[dim];
bool Sel[dim], Selq[dim];
vector<int> L[dim];
struct Compare {
bool operator() (int i, int j)
{
return Vec[i] > Vec[j];
}
};
void DF(int);
void Solve(int,int);
int main()
{
int X, Y;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d", &T);
for ( ; T > 0; T-- )
{
scanf("%d", &N);
for ( int i = 1; i <= N; i++ ) L[i].clear(), Vec[i] = 1;
// memset(Vec,0,sizeof(Vec));
for ( int i = 1; i < N; i++ )
{
scanf("%d%d", &X, &Y);
L[X].push_back(Y);
}
DF(1);
for ( int i = 1; i <= N; i++ )
{
//printf("%d ", Vec[i] );
sort( L[i].begin(), L[i].end(), Compare() );
}
Q = 0;
Solve(1,0);
printf("%d\n", Q);
}
}
void DF(int nod)
{
if ( L[nod].size() == 0 ) Vec[nod] = 1;
for ( int i = 0; i < L[nod].size(); i++ )
{
int j = L[nod][i];
DF(j);
Vec[nod] += Vec[j];
}
}
void Solve(int nod, int timp)
{
if ( Q < timp ) Q = timp;
for ( int i = 0; i < L[nod].size(); i++ )
{
int j = L[nod][i];
Solve(j,timp+1+i);
}
}