Pagini recente » Cod sursa (job #894380) | Cod sursa (job #1158596) | Cod sursa (job #2186691) | Cod sursa (job #236724) | Cod sursa (job #176700)
Cod sursa(job #176700)
#include <cstdio>
#include <string.h>
#include <algorithm>
#define NM 100001
using namespace std;
int n,t,rez[NM];
struct ch{int nod;ch*urm;}*g[NM];
void del(int k)
{ch *p;
while (g[k])
{p=g[k];
g[k]=g[k]->urm;
delete p;
}
}
void add(int x,int y)
{ch *p=new ch;
p->nod=y;
p->urm=g[x];
g[x]=p;
}
bool cmp(int x,int y)
{return (x>y);
}
void calc(int k)
{ch *p;
int v[NM],m=0,i;
rez[k]=0;
if (g[k]==NULL) {rez[k]=0;return;}
for (p=g[k];p;p=p->urm)
{calc(p->nod);
v[++m]=rez[p->nod];
}
sort(v+1,v+m+1,cmp);
for (i=1;i<=m;i++)
if (v[i]+i>rez[k]) rez[k]=v[i]+i;
}
int main()
{freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
scanf("%d",&t);
int k,i,x,y;
for (k=1;k<=t;k++)
{scanf("%d",&n);
for (i=1;i<=n;i++) del(i);
for (i=1;i<n;i++)
{scanf("%d %d",&x,&y);
add(x,y);
}
calc(1);
printf("%d\n",rez[1]);
}
return 0;
}