Pagini recente » Cod sursa (job #1103814) | Cod sursa (job #982443) | Cod sursa (job #3224883) | Cod sursa (job #2071547) | Cod sursa (job #1600843)
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
struct list
{
int x;
list * next;
} * g[100009];
int t,n,i,j,k;
bool cmp(const int a,const int b)
{
return a>b;
}
int dfs(int nod)
{
vector <int> pq;
for (list *p=g[nod];p;p=p->next)
pq.push_back(dfs(p->x));
int mx=0;
sort(pq.begin(),pq.end(),cmp);
for (i=0;i<pq.size();i++)
if (mx<i+pq[i]+1) mx=i+pq[i]+1;
return mx;
}
int main()
{
freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (i=0;i<n;i++)
g[i]=NULL;
for (i=1;i<n;i++)
{
scanf("%d %d",&j,&k);
j--,k--;
list * p = new list;
p->next=g[j];
p->x=k;
g[j]=p;
}
printf("%d \n",dfs(0));
}
return 0;
}