Cod sursa(job #2040839)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 16 octombrie 2017 16:53:22
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
/*
I love you Rose
I hope you love me too
*/
#include<bits/stdc++.h>
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
int t;
int n,ar[100002];
bool wm[100002];
vector<int>v[100002];
vector<int>ar2;
void dfs1(int nod)
{
    if(v[nod].size()==0){
        ar[nod]=1;
        return;
    }
    for(int i=0;i<v[nod].size();++i)
    {
        dfs1(v[nod][i]);
        ar[nod]+=ar[v[nod][i]];
    }
}
int dfs2()
{
    int t=0;
    while(ar2.size()<n)
    {
        ++t;
        int prvs=ar2.size();
        for(int i=0;i<prvs;++i)
        {
            int max1=0;
            int who=0;
            for(int j=0;j<v[ar2[i]].size();++j)
                if(wm[v[ar2[i]][j]]==0)
                    if(ar[v[ar2[i]][j]]>max1)
                        max1=ar[v[ar2[i]][j]],who=v[ar2[i]][j];
            ar2.push_back(who);
            wm[who]=1;
        }
    }
    return t;
}
int main()
{
    f>>t;
    for(;t;--t)
    {
        f>>n;
        if(n==1)
            g<<0<<'\n';
        else
        {
            for(int i=1;i<=n;++i)
                v[i].clear();
            memset(ar,0,100002);
            memset(wm,0,100002);
            ar2.clear();
            for(int i=1;i<n;++i)
            {
                int a,b;
                f>>a>>b;
                v[a].push_back(b);
            }
            dfs1(1);
            ar2.push_back(1);
            g<<dfs2()<<'\n';
        }
    }
    return 0;
}