Cod sursa(job #719466)

Utilizator vendettaSalajan Razvan vendetta Data 21 martie 2012 20:17:48
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define nmax 100005

using namespace std;

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

int T, n, tmin[nmax];
vector<int> gf[nmax];

void citeste(){

    f >> T;

}

bool cmp(int a, int b){

    return tmin[a] > tmin[b];

}

void goleste(){

    for(int i=0; i<nmax; i++) gf[i].clear(), tmin[i] = 0;


}

void dfs(int nod){

    for(int i=0; i<gf[nod].size(); i++){
        int vc = gf[nod][i];
        dfs(vc);
    }

    //sortez fii nodului curent in odine descrescatoare
    sort(gf[nod].begin(), gf[nod].end(), cmp);

    //actualizez nodul;
    for(int i=0; i<gf[nod].size(); i++){
        int vc = gf[nod][i];
        tmin[nod] = max(tmin[nod], tmin[vc] + i + 1);
    }

}

int main(){

    citeste();
    for(; T; --T){
        f >> n;
        goleste();
        for(int i=1; i<n; i++){
            int x, y;
            f >> x >> y;
            gf[x].push_back(y);
        }
        dfs(1);
        g << tmin[1] << "\n";
    }

    f.close();
    g.close();

    return 0;

}