Pagini recente » Cod sursa (job #2557830) | Cod sursa (job #275513) | Cod sursa (job #1186849) | Cod sursa (job #524683) | Cod sursa (job #99456)
Cod sursa(job #99456)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
//#include <algorithm>
using namespace std;
/*
struct nod
{
int val;
nod *next;
};
*/
int n,t,v[100000][2],maxim;
vector <int> a[10000];
//nod *a[100000];
//int sort_function( const void *a, const void *b)
int sort_function( const void *b, const void *a)
{
return( strcmp((char *)a,(char *)b) );
}
void anunt(int w, int c)
{
int b[100002][2],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);
}
// b.push_back(v[a[w][1]][1]);
// sort(b,b+b.size());
}
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;
}