Pagini recente » Cod sursa (job #2339944) | Cod sursa (job #374764) | Cod sursa (job #2220883) | Cod sursa (job #1539396) | Cod sursa (job #102779)
Cod sursa(job #102779)
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int dp[100100], p[100100], deg[100100];
vector<int> at[100100], g[100100];
void df( int x )
{
dp[x] = 0;
for( int i = 0; i < deg[x]; ++i )
df( g[x][i] ), at[x][i] = dp[ g[x][i] ];
sort( at[x].begin(), at[x].end() );
for( int i = 0; i < deg[x]; i++ )
if( at[x][i] + deg[x] - i > dp[x] )
dp[x] = at[x][i] + deg[x] - i;
}
int main()
{
freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);
int T, N;
for( scanf("%d", &T); T--; )
{
memset( deg, 0, sizeof( deg ) );
scanf("%d", &N);
for( int i = 1; i <= N; i++ )
g[i].clear();
for( int i = 1; i < N; i++ )
{
int a, b;
scanf("%d %d", &a, &b);
g[a].push_back(b);
p[b] = a;
deg[a]++;
}
for( int i = 1; i <= N; i++ )
if( deg[i] )
at[i].resize( deg[i] );
df( 1 );
printf("%d\n", dp[1] );
}
return 0;
}