Cod sursa(job #211745)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 3 octombrie 2008 16:00:47
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm>
#include <memory>

using namespace std;

int t,n,a,b;
struct nod
{
    int inf;
    nod *urm;
} *g[100001];

nod *p;

void baga(int x, int y)
{
    p=new nod;
    p->inf=y;
    p->urm=g[x];
    g[x]=p;
}

int timp(int x)
{
    if(!g[x])
        return 0;
    int l[100001],nr=0;
    memset(l,0,sizeof(l));
    for(nod *i=g[x];i;i=i->urm)
    {
        l[nr++]=timp(i->inf);
        sort(l,l+nr);
        int max=0;
        for(int j=0;j<nr;j++)
            if(l[j]+nr-j>max)
                max=l[j]+nr-j;
        return max;
    }
}

int main()
{
    freopen("zvon.in","r",stdin);
    freopen("zvon.out","w",stdout);
    scanf("%d",&t);
    for(int i=0;i<t;i++)
    {
        scanf("%d",&n);
        if(n==1)
            printf("0\n");
        else
        {
            for(int j=0;j<n-1;j++)
            {
                scanf("%d%d",&a,&b);
                baga(a,b);
            }
            printf("%d\n",timp(1)+1);
        }
        for(int i=0;i<n;i++)
        {
            g[i]=NULL;
        }
    }
    fclose(stdout);
    return 0;
}