Pagini recente » Cod sursa (job #261782) | Cod sursa (job #2883121) | Cod sursa (job #2124507) | Cod sursa (job #2875231) | Cod sursa (job #2489425)
#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];
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]);
}
}
int main(){
int i,x,y,ans,node,time;
f >> T;
while(T--){
f >> n;
for(i = 1 ; i <= n ; i++)
v[i].clear();
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{
if(sons[v[node][0]] >= sons[v[node][1]]){
d.push_back(make_pair(v[node][0], time + 1));
d.push_back(make_pair(v[node][1], time + 2));
}else{
d.push_back(make_pair(v[node][0], time + 2));
d.push_back(make_pair(v[node][1], time + 1));
}
}
}
g << ans << "\n" ;
}
return 0;
}