Cod sursa(job #99456)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 11 noiembrie 2007 11:41:48
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.69 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
//#include <algorithm>


using namespace std;
/*
struct nod
    {
        int val;
        nod *next;
    };
*/
int n,t,v[100000][2],maxim;
vector <int> a[10000];
//nod *a[100000];

//int sort_function( const void *a, const void *b)
int sort_function( const void *b, const void *a)
{
   return( strcmp((char *)a,(char *)b) );
}

void anunt(int w, int c)
{
    int b[100002][2],q;
    memset(b,0,sizeof(b));
    for (int i=0; i<v[w][0]; i++)
    {
        b[i][0]=v[a[w][i]][1];
        b[i][1]=a[w][i];
    }
    qsort((void *)b, v[w][0], sizeof(b[0]), sort_function);
    for (int i=0; i<v[w][0]; i++)
    {
        q=c+i+1;
        if (q>maxim)
            maxim=q;
        if (b[i][0]!=0)
            anunt(b[i][1],q);
    }
//        b.push_back(v[a[w][1]][1]);
//      sort(b,b+b.size());
}

void valoare(int w)
{
    int q;
    for (int i=0; i<v[w][0]; i++)
    {
        q=a[w][i];
        if (v[q][0]!=0)
            valoare(q);
        v[w][1]+=(1+v[q][1]);
    }
}

void citire()
{
    freopen("zvon.in","r",stdin);
    scanf("%d", &t);
    int x,z;
    for (int k=1; k<=t; k++)
    {
        for (int i=0; i<=n; i++)
            a[i].clear();
        scanf("%d", &n);
        memset(v,0,sizeof(v));
        for (int i=1; i<n; i++)
        {
            scanf("%d%d", &x, &z);
            ++v[x][0];
            a[x].push_back(z);
        }
        maxim=0;
        valoare(1);
        anunt(1,0);
        printf("%d\n",maxim);
    }
    fclose(stdin);
}

int main()
{
    freopen("zvon.out","w",stdout);
    citire();
    fclose(stdout);
    return 0;
}