Cod sursa(job #2021622)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 14 septembrie 2017 02:12:57
Problema Zvon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define N 100010


using namespace std;

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

vector<int> vec[N];
int viz[N],deq[N],i,j,t,n,m,k,v[N],x,y,rez,par[N];
bool comp(int a,int b)
{
    return deq[a]>deq[b];
}
int dfs(int nod,int nr)
{
    int max1=0,el,cnt=0;
    if(deq[nod]==0)
        return 1;
    for(int t=0;t<vec[nod].size();t++)
    {
        el=dfs(vec[nod][t],0);
        nr++;
        if(el>1)
        {
            if(max1<el)
            {
                max1=el;
                cnt=0;
            }
            else
                if(max1==el)
                {
                    cnt++;
                }
        }
    }
    if(max1+cnt>nr)
    {
        if(nod!=1)
            return max1+cnt+1;
        else
            return max1+cnt;
    }
    else
    {
        if(nod!=1)
            return nr+1;
        else
            return nr;
    }
}
int main()
{
    f>>t;
    while(t!=0)
    {
        f>>n;
        rez=0;
        if(n==1)
            g<<0<<' ';
        else
        {
            for(i=1;i<=n;i++)
                vec[i].clear();
            for(i=1;i<n;i++)
            {
                f>>x>>y;
                vec[x].push_back(y);
                deq[x]++;
            }
            for(i=1;i<=n;i++)
                if(vec[i].size()!=0)
                    sort(vec[i].begin(),vec[i].end(),comp);
            g<<dfs(1,0);
        }
        t--;
        g<<"\n";
    }
}