Pagini recente » Cod sursa (job #1751521) | Cod sursa (job #1619383) | Cod sursa (job #525901) | Cod sursa (job #2117152) | Cod sursa (job #1716216)
#include <fstream>
#include <vector>
#include <iostream>
#include <algorithm>
#define DIM 100005
using namespace std;
vector<int> adj[DIM];
int n,q[DIM],deg[DIM],len[DIM];
bool comp(int a, int b) {
return deg[a]>deg[b];
}
int bfs(int nod) {
int st=0,dr=1,u,maxim=0;
q[st]=nod,len[nod]=0;
while(st<dr) {
u=q[st];
for(int i=0;i<adj[u].size();i++) {
q[dr]=adj[u][i];
len[adj[u][i]]=len[u]+i+1;
if(len[adj[u][i]]>maxim)
maxim=len[adj[u][i]];
dr++;
}
st++;
}
return maxim;
}
int solve(int u) {
for(int i=0;i<adj[u].size();i++)
deg[adj[u][i]]=solve(adj[u][i]);
sort(adj[u].begin(),adj[u].end(),comp);
return bfs(u);
}
int main()
{
ifstream fin("zvon.in");
ofstream fout("zvon.out");
int t,a,b;
fin>>t;
for(int i=1;i<=t;i++) {
fin>>n;
for(int i=1;i<n;i++) {
fin>>a>>b;
adj[a].push_back(b);
}
fout<<solve(1)<<'\n';
for(int i=1;i<=n;i++)
adj[i].clear();
}
return 0;
}