Cod sursa(job #1520510)

Utilizator emanuel_rRamneantu Emanuel emanuel_r Data 8 noiembrie 2015 21:37:47
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<algorithm>
#include<fstream>
#include<vector>
#include<iostream>

using namespace std;

ifstream f("zvon.in");
ofstream g("zvon.out");


int const NMax = 100005;
vector <int> G[NMax];
int use[NMax], T[NMax];
int n, t;

void citire()
{
    int i, x, y;
    f>>n;
    for(i=1; i<n; i++){
        f>>x>>y;
        G[x].push_back(y);
    }
}

bool descend(int i, int j)
{
    return i>j;
}

void DFS(int nod)
{
    vector <int> TVec;
    int vecin, i;
    use[nod] = 1;
    for(i=0; i < G[nod].size(); i++){
        vecin = G[nod][i];
        if(!use[vecin]){
            DFS(vecin);
            TVec.push_back(T[vecin]);
        }
    }
    sort(TVec.begin(), TVec.end(), descend);

    for(i = 0; i < TVec.size(); i++){
        T[nod] = max(T[nod], TVec[i] + 1 + i);
    }
}

void curatare()
{
    int i;
    for(i=1; i <= n; i++)
        G[i].clear();
    for(i=1; i<=n; i++){
        use[i] = T[i] = 0;
    }
}

int main()
{
    f>>t;
    while(t--){
        citire();
        DFS(1);
        g<<T[1]<<"\n";
        curatare();
    }
    return 0;
}