Cod sursa(job #1365669)

Utilizator matei_cChristescu Matei matei_c Data 28 februarie 2015 14:09:32
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<cmath>
using namespace std ;

#define maxn 100005

int T, N ;

vector<int> graf[maxn] ;

int timp[maxn] ;

void init()
{
    for(int i = 1; i <= N; ++i)
    {
        graf[i].clear() ;
        timp[i] = 0 ;
    }
}

bool cmp(int x, int y)
{
    return ( timp[x] > timp[y] ) ;
}

void dfs(int nod)
{
    int nrvecini = graf[nod].size() ;

    for(int i = 0; i < nrvecini; ++i)
    {
        int vecin = graf[nod][i] ;
        dfs(vecin) ;
    }

    sort( graf[nod].begin(), graf[nod].end(), cmp ) ;

    for(int i = 0; i < nrvecini; ++i)
    {
        int vecin = graf[nod][i] ;

        timp[nod] = max( timp[nod], timp[vecin] + i + 1 ) ;
    }
}

int main()
{
	std::ios_base::sync_with_stdio(false) ;

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

    cin >> T ;

    while( T-- )
    {
        init() ;

        cin >> N ;

        for(int i = 1; i < N; ++i)
        {
            int x, y ;
            cin >> x >> y ;

            graf[x].push_back(y) ;
        }

        dfs(1) ;

        cout << timp[1] << "\n" ;
    }

	return 0 ;
}