Pagini recente » Cod sursa (job #2832925) | Cod sursa (job #1863049) | Cod sursa (job #2758558) | Cod sursa (job #1879539) | Cod sursa (job #2489451)
#include <bits/stdc++.h>
using namespace std;
ifstream f("zvon.in");
ofstream g("zvon.out");
const int NMAX = 100005;
const int inf = 1e9;
int n,T;
vector < int > v[NMAX];
deque < pair < int, int> > d;
int lvl[NMAX], sons[NMAX];
bool cmp(int x, int y){
return sons[x] > sons[y];
}
void dfs(int node, int level){
lvl[node] = level;
sons[node] = 0;
for(auto it: v[node]){
dfs(it, level + 1);
sons[node] = max(sons[it] + 1, sons[node]);
}
sort(v[node].begin(), v[node].end(), cmp);
}
int main(){
int i,x,y,ans,node,time;
f >> T;
while(T--){
f >> n;
for(i = 1 ; i <= n ; i++)
v[i].clear(), sons[i] = 0;
d.clear();
for(i = 1 ; i < n ; i++){
f >> x >> y;
v[x].push_back(y);
}
dfs(1, 0);
d.push_back(make_pair(1,0));
ans = 0;
while(!d.empty()){
node = d.front().first;
time = d.front().second;
d.pop_front();
if(v[node].size() == 0)
ans = max(ans, time);
else
if(v[node].size() == 1)
d.push_back(make_pair(v[node][0], time + 1));
else{
int add = 1;
for(auto it: v[node]){
d.push_back(make_pair(it, time + add));
add++;
}
}
}
g << ans << "\n" ;
}
return 0;
}