Cod sursa(job #719404)

Utilizator vendettaSalajan Razvan vendetta Data 21 martie 2012 19:43:23
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <algorithm>
#include <vector>
#define nmax 100005

using namespace std;

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

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

void citeste(){

    f >> T;

}

bool cmp(int a, int b){

    return d[a] > d[b];

}

void init(){

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

}

void dfs(int nod){

    d[nod] = 1;

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

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

}

int calcul(int nod){


    //++vizitate;


    for(int i=0; i<gf[nod].size(); i++){
        int vc = gf[nod][i];
        ++vizitate;
        calcul(vc);
        if (n-vizitate <= vizitate){ return vizitate;}
    }

    //if (n-vizitate <= vizitate){ g << vizitate << "\n";return vizitate;}

}

void rezolva(){

    for(; T; --T){
        f >> n;
        init();
        vizitate = 0;
        for(int i=1; i<n; i++){
            int x, y;
            f >> x >> y;
            gf[x].push_back(y);
        }
        dfs(1);
        //g << "muie" << "\n";
        g << calcul(1) << "\n";
        //g << vizitate-1 << "\n";
    }

}

int main(){

    citeste();
    rezolva();

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

    return 0;

}