Pagini recente » Cod sursa (job #909804) | Cod sursa (job #2773339) | Monitorul de evaluare | Cod sursa (job #359760) | Cod sursa (job #309104)
Cod sursa(job #309104)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define file_in "zvon.in"
#define file_out "zvon.out"
#define Nmax 100100
#define pb push_back
#define sz size
#define Clear(a) memset(a,0,sizeof(a))
int n,T;
vector<int> v[Nmax];
int viz[Nmax];
int sol[Nmax];
int x,y;
vector<int> v1;
inline int max(int a, int b)
{
if (a>b) return a;
return b;
}
inline int cmp(int a, int b)
{
return a>b;
}
void dfs(int nod)
{
int i;
for (i=1;i<=n;++i)
v1.clear();
viz[nod]=1;
for (i=0;i<v[nod].sz();++i)
{
if (!viz[v[nod][i]])
{
dfs(v[nod][i]);
v1.pb(sol[v[nod][i]]);
}
}
sort(v1.begin(),v1.end(),cmp);
sol[nod]=0;
for (i=0;i<v1.sz();++i)
sol[nod]=max(sol[nod],v1[i]+i+1);
}
int main()
{
int i;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(i=1;i<=n;++i)
v[i].clear();
for (i=1;i<n;++i)
{
scanf("%d %d", &x, &y);
v[x].pb(y);
}
Clear(viz);
dfs(1);
if (sol[1]==0) printf("%d\n", sol[1]);
else printf("%d\n", sol[1]+1);
}
fclose(stdin);
fclose(stdout);
return 0;
}