Pagini recente » Cod sursa (job #2432985) | runda_de_verificare1 | Cod sursa (job #2957605) | Cod sursa (job #2161110) | Cod sursa (job #1833177)
#include <iostream>
#include <fstream>
#include <vector>
#include<algorithm>
using namespace std;
ifstream in("zvon.in");
ofstream out("zvon.out");
const int N= 100001;
int n,nrd[N],d[N];
vector<int> a[N];
bool cmp(int x, int y)
{
return (nrd[x]>nrd[y]);
}
void parc(int x)
{
int i,y;
nrd[x]=1;
for(i=0;i<a[x].size();i++)
{
y=a[x][i];
parc(y);
nrd[x]+=nrd[y];
}
}
int maxim(int a, int b)
{
if(a>b)
return a;
else
return b;
}
void dfs(int x)
{
int i,y,s=1;
d[x]=0;
for(i=0;i<a[x].size();i++)
{
y=a[x][i];
dfs(y);
d[x]=maxim(d[y]+1+i,d[x]);
//s++;
}
}
int main()
{
int t,i,x,y;
in>>t;
while(t)
{
in>>n;
for(i=1;i<n;i++)
{
in>>x>>y;
a[x].push_back(y);
}
parc(1);
for(i=1;i<=n;i++)
{
sort(a[i].begin(),a[i].end(),cmp);
//out<<nrd[i]<<" ";
}
dfs(1);
out<<d[1];
t--;
out<<'\n';
for(i=1;i<=n;i++)
{
a[i].clear();
}
}
return 0;
}