兔子
我们考察整棵树上编号最大的点
直接做是
时间复杂度
#include<bits/stdc++.h>
const int N=1000050;
using namespace std;
int n,res;
int fa[N],rest[N];
int gf(int k){return k==fa[k]?k:fa[k]=gf(fa[k]);}
vector<int> e[N];
void solve(){
cin>>n;
for(int i=1;i<=n;i++)fa[i]=i,rest[i]=1,e[i].clear(),res=0;
for(int i=1;i<n;i++){
int x,y;cin>>x>>y;
e[max(x,y)].push_back(min(x,y));
}
for(int k=1;k<=n;k++){
int c=0;
for(auto to:e[k]){
c+=!!rest[gf(to)];
rest[k]+=rest[gf(to)];
fa[gf(to)]=k;
}
if(c>=2)rest[k]-=3,res++;
}
cout<<res<<endl;
}
main(){
ios::sync_with_stdio(false);
int _T=1;cin>>_T;
while(_T--)solve();
}