Pagini recente » Cod sursa (job #138414) | Cod sursa (job #306097) | Cod sursa (job #2163653) | Cod sursa (job #83968) | Cod sursa (job #235094)
Cod sursa(job #235094)
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#define N 100010
using namespace std;
int t,n,x,y,i,fii[N],kont,rez[N],V[N];
vector<int> L[N];
queue<int> C;
bool cmp(int i, int j)
{
return (fii[i]>fii[j]);
}
void dfs(int nod)
{
vector<int>::iterator it;
for (it=L[nod].begin(); it!=L[nod].end(); it++)
{
dfs(*it);
fii[nod]+=fii[*it];
}
}
void zvon() //care de fapt e un bfs
{
vector<int>::iterator it;
for (C.push(1); !C.empty(); C.pop())
{
kont=0;
for (it=L[C.front()].begin(); it!=L[C.front()].end(); it++)
{
V[++kont]=*it;
C.push(*it);
}
sort(V+1,V+kont+1,cmp);
for (i=1; i<=kont; i++) rez[V[i]]=rez[C.front()]+i;
}
}
int main()
{
freopen("zvon.in","r",stdin);
freopen("zvon.out","w",stdout);
scanf("%d\n",&t);
while (t--)
{
scanf("%d\n",&n);
for (i=1; i<n; i++)
{
scanf("%d %d\n",&x,&y);
L[x].push_back(y);
fii[x]++;
}
dfs(1);
zvon();
printf("%d\n",*max_element(rez+1,rez+n+1));
for (i=1; i<n; i++) L[i].clear();
}
return 0;
}