Pagini recente » Cod sursa (job #218596) | Cod sursa (job #918879) | Diferente pentru autumn-warmup-2007/solutii/runda-2 intre reviziile 56 si 27 | Statistici Bogdan Fometescu (duxdeorum) | Cod sursa (job #2054848)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("zvon.in");
ofstream out("zvon.out");
const int N=100001;
vector <int> a[N];
int t,n,cost[N],nr[N];
/*void dfs1(int nod)
{
int i;
for(i=0;i<(int)a[nod].size();i++)
{
y=a[nod][i];
dfs(y);
nr[nod]=nr[nod]+nr[y];
}
++nr[nod];
}
*/
bool cmp(int x,int y)
{
return cost[x]>cost[y];
}
void dfs(int nod)
{
int i;
for(i=0; i<(int)a[nod].size(); i++)
dfs(a[nod][i]);
if(a[nod].size())
{
sort(a[nod].begin(),a[nod].end(),cmp);
for(i = 0; i < (int)a[nod].size(); i++)
cost[nod] = max(cost[nod], cost[a[nod][i]] + i + 1);
}
}
void citire()
{
int i,x,y,j;
in>>t;
for(i=1; i<=t; i++)
{
in>>n;
for(j=1; j<n; j++)
{
in>>x>>y;
a[x].push_back(y);
}
for(j=1; j<=n; j++)
cost[j]=0;
if(n==1)
out<<0<<'\n';
else
{
dfs(1);
out<<cost[1]<<'\n';
}
for(j=1; j<n; j++)
a[j].clear();
}
}
int main()
{
citire();
return 0;
}