Cod sursa(job #107556)

Utilizator crawlerPuni Andrei Paul crawler Data 19 noiembrie 2007 22:53:05
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

vector<int> l[100100];
int n,x,y;
int DF(int nod)
{
    if(l[nod].size() == 0) return 0;
    
    vector<int> tmp;
    
    for (int i=0;i<l[nod].size();++i)
     tmp.push_back(DF(l[nod][i]));
    
    sort(tmp.begin(),tmp.end());
    reverse(tmp.begin(),tmp.end());
    
    int ret = tmp.size(), left=tmp.size(), plus = 0;
    for (int i=0;i<tmp.size();++i)
    {
        --left;
        if (tmp[i] > left) plus = max(plus,tmp[i]-left);           
    }
    ret += plus;
    return ret;
}

void solve()
{
     scanf("%d", &n);
     for (int i=1;i<=n;++i) l[i].clear();
     for (int i=1;i<n;++i)
     {
         scanf("%d%d", &x,&y);
         l[x].push_back(y);         
     }
     printf("%d\n", DF(1));     
}

int main()
{
    freopen("zvon.in","r",stdin);
    freopen("zvon.out","w",stdout);
    
    int t;
    scanf("%d", &t); while(t--) solve();
        
    return 0;
}