Pagini recente » Cod sursa (job #1559210) | Cod sursa (job #34968) | Cod sursa (job #2494536) | Cod sursa (job #815875) | Cod sursa (job #145621)
Cod sursa(job #145621)
#include<stdio.h>
#define N 50000
int t,n,niv[N],*a[N],ta[N],tmin[N],max,viz[N];
struct vec{
int x,y;
}v[N];
void df(int nod)
{
int i;
viz[nod]=1;
for(i=1;i<=a[nod][0];i++)
if(!viz[a[nod][i]])
{
viz[a[nod][i]]=1;
df(a[nod][i]);
}
else
tmin[nod]=1+tmin[a[nod][i]];
}
void read_solve()
{
int i1,i;
scanf("%d",&t);
for(i1=1;i1<=t;i1++)
{
scanf("%d",&n);
if(n==1)
{
printf("0\n");
continue;
}
for(i=1;i<=n-1;i++)
{
scanf("%d%d",&v[i].x,&v[i].y);
niv[v[i].x]++;
niv[v[i].y]++;
ta[v[i].y]=v[i].x;
}
for(i=1;i<=n;i++)
{
a[i]=new int[niv[i]+1];
a[i][0]=0;
}
for(i=1;i<=n-1;i++)
{
a[v[i].x][++a[v[i].x][0]]=v[i].y;
a[v[i].y][++a[v[i].y][0]]=v[i].y;
}
for(i=1;i<=n;i++)
if(ta[i]==0)
df(i);
max=tmin[1]+1;
for(i=2;i<=n;i++)
if(tmin[i]+1>max)
max=tmin[i]+1;
printf("%d\n",max);
}
}
int main()
{
freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
read_solve();
return 0;
}