Cod sursa(job #1419783)

Utilizator Liviu98Dinca Liviu Liviu98 Data 16 aprilie 2015 15:34:23
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <stdio.h>
#include<string.h>
#include <cstring>
#define NMax 100005
using namespace std;
vector<int> Graf[NMax];
int N,T,a,b,Timp[NMax];

class Compara
{
    public:
        bool operator()( const int &x, const int &y )
        {
            return Timp[x]>Timp[y];
        }
};

void DFS(int nod)
{
    for(int i=0;i<Graf[nod].size();++i)
        DFS(Graf[nod][i]);

    sort(Graf[nod].begin(),Graf[nod].end(),Compara());

    for(int i=0;i<Graf[nod].size();i++)
        Timp[nod]=max(Timp[nod],Timp[Graf[nod][i]]+int(i)+1);
}

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

    scanf("%d",&T);
    memset(Timp,0,sizeof(Timp));

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

        for(int i=1;a,b,i<N;++i)
        {
            scanf("%d%d",&a,&b);
            Graf[a].push_back(b);
        }
        DFS(1);

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

        memset(Timp,0,sizeof(Timp));
        memset(Graf,0,sizeof Graf);
    }
}

int main()
{
    Read();
}