Cod sursa(job #106491)

Utilizator crawlerPuni Andrei Paul crawler Data 18 noiembrie 2007 17:55:19
Problema Zvon Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.92 kb
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

vector<int> l[100100];
int a[100100], 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());
    
    int ret = l[nod].size();
    for (int i=ret-1;i>=0;--i)
     if (tmp[i] - i > 0) ret += tmp[i] - i;
    
    return ret;
}

void solve()
{
     memset(a,0,400400); 
     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;
}