Pagini recente » Cod sursa (job #2468706) | Cod sursa (job #592971) | Cod sursa (job #830410) | Cod sursa (job #2924497) | Cod sursa (job #1833175)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in ("zvon.in");
ofstream out ("zvon.out");
int t,n;
int nrd[100005], timp[100005];
vector <int> a[100005];
bool cmp (int x, int y)
{
return (nrd[x]>nrd[y]);
}
void dfs1 (int x)
{
int i,y;
nrd[x]=1;
for(i=0;i<a[x].size();i++)
{
y=a[x][i];
dfs1(y);
nrd[x]+=nrd[y];
}
}
void dfs2 (int x)
{
int i,y;
timp[x]=0;
for(i=0;i<a[x].size();i++)
{
y=a[x][i];
dfs2(y);
timp[x]= max( 1+i+timp[y], timp[x]);
}
}
int main()
{
in>>t;
int i,j,k,x,y;
for(k=1;k<=t;k++)
{
in>>n;
for(i=1;i<n;i++)
{
in>>x>>y;
a[x].push_back(y);
}
for(i=1;i<=n;i++)
dfs1(i);
/*for(i=1;i<=n;i++)
out<<nrd[i]<<" ";
out<<'\n';*/
for(i=1;i<=n;i++)
sort(a[i].begin(), a[i].end(), cmp);
for(i=1;i<=n;i++)
dfs2(i);
out<<timp[1]<<'\n';
for (i = 1; i <= n; i++)
a[i].clear();
}
return 0;
}