Pagini recente » Cod sursa (job #103954) | Cod sursa (job #3127916) | Cod sursa (job #1863929) | Cod sursa (job #2367772) | Cod sursa (job #99478)
Cod sursa(job #99478)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
//#include <algorithm>
using namespace std;
int n,t,v[100002][2],maxim,b[100002][2];
vector <int> a[100002];
int sort_function( const void *b, const void *a)
{
return( strcmp((char *)a,(char *)b) );
}
void anunt(int w, int c)
{
int q;
memset(b,0,sizeof(b));
for (int i=0; i<v[w][0]; i++)
{
b[i][0]=v[a[w][i]][1];
b[i][1]=a[w][i];
}
qsort((void *)b, v[w][0], sizeof(b[0]), sort_function);
for (int i=0; i<v[w][0]; i++)
{
q=c+i+1;
if (q>maxim)
maxim=q;
if (b[i][0]!=0)
anunt(b[i][1],q);
}
}
void valoare(int w)
{
int q;
for (int i=0; i<v[w][0]; i++)
{
q=a[w][i];
if (v[q][0]!=0)
valoare(q);
v[w][1]+=(1+v[q][1]);
}
}
void citire()
{
freopen("zvon.in","r",stdin);
scanf("%d", &t);
int x,z;
for (int k=1; k<=t; k++)
{
for (int i=0; i<=n; i++)
a[i].clear();
scanf("%d", &n);
memset(v,0,sizeof(v));
for (int i=1; i<n; i++)
{
scanf("%d%d", &x, &z);
++v[x][0];
a[x].push_back(z);
}
maxim=0;
valoare(1);
anunt(1,0);
printf("%d\n",maxim);
}
fclose(stdin);
}
int main()
{
freopen("zvon.out","w",stdout);
citire();
fclose(stdout);
return 0;
}