Cod sursa(job #91733)

Utilizator mugurelionutMugurel-Ionut Andreica mugurelionut Data 13 octombrie 2007 12:38:55
Problema Zvon Scor Ascuns
Compilator cpp Status done
Runda Marime 1.05 kb
#include <stdio.h>
#include <string.h>

#include <vector>
using namespace std;

#define NMAX 100100

int nf[NMAX], tmin[NMAX], sel[NMAX];
vector<int> f[NMAX];
int i, j, k, N;

void df(int n)
{
int i, j, ff, max;

for (i = 0; i < nf[n]; i++)
  df(f[n][i]);

tmin[n] = 0;
for (i = 0; i < nf[n]; i++)
  sel[f[n][i]] = 0;

for (j = 1; j <= nf[n]; j++)
  {
    max = -1;
    for (i = 0; i < nf[n]; i++)
      if (!sel[f[n][i]] && tmin[f[n][i]] >= max)
        max = tmin[f[n][i]],
        ff = f[n][i];

    if (max + j > tmin[n])
      tmin[n] = max + j;
    sel[ff] = 1;
  }
}

int main()
{
int T;

freopen("zvon.in", "r", stdin);
freopen("zvon.out", "w", stdout);

scanf("%d", &T);
while (T--)
  {
    scanf("%d", &N);

    memset(nf, 0, sizeof(nf));
    memset(f, 0, sizeof(f));


    for (i =1; i <= N; i++)
      f[i].clear();

    for (k = 1; k < N; k++)
      {
        scanf("%d %d", &i, &j);
        f[i].push_back(j);
        nf[i]++;
      }

    df(1);

    printf("%d\n", tmin[1]);
  }

return 0;
}