Cod sursa(job #1919802)

Utilizator RaZxKiDDavid Razvan RaZxKiD Data 9 martie 2017 21:06:35
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>

using namespace std;

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

int t,n;

vector<int> L[100005];
int F[100005];

void read(){
    int x,y;
    in>>n;
    for(int i=1;i<n;i++){
        in>>x>>y;
        L[x].push_back(y);
    }
}
bool cmp(int a, int b){
    return F[a]>F[b];
}
int dfs(int st, int base){
    int c=1,rm=base;
    for(auto x : L[st]){
        rm=max(dfs(x,base+c),rm);
        c++;
    }
    return rm;
}
void dfsf(int st){
    F[st]=1;
    for(auto x : L[st]){
        dfsf(x);
        F[st]+=F[x];
    }
}
void solve_t(){
    dfsf(1);
    for(int i=1;i<=n;i++){
        sort(L[i].begin(),L[i].end(),cmp);
    }
    out<<dfs(1,0)<<"\n";
    memset(F,0,sizeof(F));
    for(int i=1;i<=n;i++){
        L[i].clear();
    }
}
void solve(){
    in>>t;
    for(int o=1;o<=t;o++){
        read();
        solve_t();
    }
}
int main(){
    solve();
    return 0;
}