Pagini recente » Diferente pentru problema/mit intre reviziile 7 si 6 | Cod sursa (job #1152371) | Monitorul de evaluare | Cod sursa (job #1404086) | Cod sursa (job #346428)
Cod sursa(job #346428)
#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;
}