Cod sursa(job #1211664)

Utilizator xtreme77Patrick Sava xtreme77 Data 22 iulie 2014 23:35:17
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <algorithm>
#include <bitset>
#include <cstring>

#define rint register int
#define pb push_back

const char IN [] = "zvon.in";
const char OUT [] = "zvon.out";
const int MAX = 100014;

using namespace std;

ifstream fin ( IN );
ofstream fout ( OUT );
int tmin[MAX];
vector <int> gr[MAX];
bool cmp ( const int a , const int b){
    return tmin[a]>tmin[b];
}
void dfs(int nod);
int main( )
{
    int t;
    fin >> t;
    while( t -- ){
        memset(tmin,0,sizeof(tmin));
        int n;
        fin >> n;
        for( rint i = 1 ; i <= n ; ++ i )
            gr[i].clear();
        for( rint i = 1 ; i < n ; ++ i ){
            int x , y;
            fin >> x >> y ;
            gr[x].pb(y);
        }
        dfs(1);
        fout << tmin[1] << '\n';
    }
    return 0;
}
void dfs(int nod)
{
    for( rint i = 0 ; i < (int) gr[nod].size( ) ; ++ i )
            dfs ( gr[nod][i] );
    sort( gr[nod].begin( ),gr[nod].end( ),cmp );
    tmin[nod] = 0;
    for( rint i = 0 ; i < (int) gr[nod].size( ) ; ++ i ){
        int fata = i + 1 + tmin[gr[nod][i]] ;
        if(tmin[nod]<fata)
            tmin[nod] = fata ;
    }
}