Cod sursa(job #313020)

Utilizator DraStiKDragos Oprica DraStiK Data 7 mai 2009 18:56:37
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <algorithm>
#define DIM 100005
using namespace std;
struct nod {int x;
            nod *urm;} *lst[DIM];
int n,t;
void add (int a,int b)
{
    nod *p=new nod;
    p->x=b;
    p->urm=lst[a];
    lst[a]=p;
}
void read ()
{
    int i,x,y;
    scanf ("%d",&n);
    for (i=1; i<n; ++i)
    {
        scanf ("%d%d",&x,&y);
        add (x,y);
    }
}
int df (int val)
{
    if (!lst[val])
        return 0;
    nod *p;
    int a[n+1];
    int i,m,maxim;
    for (p=lst[val], m=0; p; p=p->urm)
        a[++m]=df (p->x);
    sort (a+1,a+m+1);
    for (i=1, maxim=0; i<=m; ++i)
        if (a[i]+m-i+1>maxim)
            maxim=a[i]+m-i+1;
    return maxim;
}
void clean ()
{
    int i;
    for (i=1; i<=n; ++i)
        lst[i]=NULL;
}
int main ()
{
    freopen ("zvon.in","r",stdin);
    freopen ("zvon.out","w",stdout);
    int i;
    scanf ("%d",&t);
    for (i=1; i<=t; ++i)
    {
        read ();
        printf ("%d\n",df (1));
        clean ();
    }
    return 0;
}