Cod sursa(job #346428)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 7 septembrie 2009 19:36:51
Problema Zvon Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
#define Nmax 100001
using namespace std;

vector <int> a[Nmax];
int t,i,n,x,y,j,k;
int sol[Nmax];

void work(int i){
     vector <int> v;
     vector <int>:: iterator it;
	int maxim;
	if( a[i].empty() ) sol[i]=0;
   else{
   	v.clear();
   	j=a[i].size();
   	for(it=a[i].begin(); it!=a[i].end(); it++){
      	work(*it);
         v.push_back(sol[*it]);
      }
      sort(v.begin(),v.end());
      maxim=0; j=v.size();
      for(it=v.begin(); it!=v.end(); it++){
      	maxim=max(maxim,*it+j);
      	j--;
       }
      sol[i]=maxim;
   }
}      

int main(){
	freopen("zvon.in","r",stdin);
   freopen("zvon.out","w",stdout);
   scanf("%d",&t);

   for(; t; --t){
   	scanf("%d",&n);
   	for(i=1;i<=n;++i) a[i].clear();
      for(i=1;i<n;++i){
      	scanf("%d%d",&x,&y);
         a[x].push_back(y);
      }
      for(i=1;i<=n;++i)
        j=a[i].size();
      work(1);
      
      printf("%d\n",sol[1]);
   }
   fclose(stdin); fclose(stdout);
   return 0;
}