Cod sursa(job #105175)

Utilizator georgianaGane Andreea georgiana Data 17 noiembrie 2007 11:20:00
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.14 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <vector>

using namespace std;

#define Nmax 100002
vector <int>v[Nmax];
int nrt,n,x,y,t[Nmax],h[Nmax];
char rad[Nmax];

bool cmp(int a, int b)
{
     return (a>b);
}

void df(int k)
{
     t[0]=0;
     int nk;
     nk=v[k].size();
     for (int i=0;i<nk;i++)
         df(v[k][i]);
     for (int i=0;i<nk;i++)
         h[i]=t[v[k][i]];
     sort(h,h+nk,cmp);
     for (int i=0;i<nk;i++)
         t[k]=max(t[k],i+1+h[i]);
}

int main()
{
    freopen("zvon.in","r",stdin);
    freopen("zvon.out","w",stdout);
    scanf("%d",&nrt);
    
    while (nrt--)
    {
          scanf("%d",&n);
          if (n<=1)
          {
                   printf("0\n");
                   continue;
          }
          memset(rad,0,sizeof(rad));
          for (int i=1;i<n;i++)
              {
                   scanf("%d %d",&x,&y);
                   v[x].push_back(y);
                   rad[y]=1;
              }
          int r=1;
          while (r<=n && rad[r]!=0) r++;
          df(r);
          printf("%d\n",t[r]);
    }
    
    return 0;
}