Pagini recente » Cod sursa (job #1434641) | Cod sursa (job #685757) | Cod sursa (job #1693515) | Cod sursa (job #1755929) | Cod sursa (job #108212)
Cod sursa(job #108212)
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <utility>
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];
int Tmin[dim];
vector<int> R;
struct Compare {
bool operator() (int i, int j)
{
return R[i] > R[j];
}
};
inline int Maxim(int a, int b ) { return a > b ? a : b; }
void DF(int);
void Solve(int,int);
void DF_Solve(int nod);
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(), Tmin[i] = 0;
for ( int i = 1; i < N; i++ )
{
scanf("%d%d", &X, &Y);
L[X].push_back(Y);
}
DF_Solve(1);
/* for ( int i = 1; i <= N; i++ )
printf("%d ", Tmin[i] );
*/
printf("%d\n", Tmin[1]);
// printf("\n");
}
}
void DF_Solve(int nod)
{
if ( L[nod].size() == 0 )
{
Tmin[nod] = 0;
return;
}
for ( int i = 0; i < L[nod].size(); i++ )
{
DF_Solve(L[nod][i]);
}
R.clear();
for ( int i = 0; i < L[nod].size(); i++ )
{
R.push_back(Tmin[L[nod][i]]);
}
/* printf("|");
sort( R.begin(), R.end(), Compare() );
for ( int i = 0; i < R.size(); i++ )
{
// printf("%d ", R[i]);
Tmin[nod] = Maxim( Tmin[nod], i+1+R[i] );
}
// printf(" %d\n", L[nod].size() );*/
}
/*
void DF(int nod)
{
if ( L[nod].size() == 0 ) Vec[nod] = 0;
for ( int i = 0; i < L[nod].size(); i++ )
{
DF(L[nod][i]);
Vec[nod] += Vec[L[nod][i]] + 1;
}
}
void Solve(int nod, int timp)
{
if ( Q < timp ) Q = timp;
for ( int i = 0; i < L[nod].size(); i++ )
{
Solve(L[nod][i],timp+1+i);
}
}*/