CF1695D2

· · 题解

//#pragma once
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
#include <bits/stdc++.h>
//#include <bits/extc++.h>
#define ll long long
using namespace std;
//using namespace __gnu_pbds;
inline int read(){
    int ret=0,f=1;char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
    while(isdigit(ch)){ret=ret*10+ch-'0';ch=getchar();}
    return ret*f; //x=(x<<1)+(x<<3)+(ch^48);
}
const int maxn=1e5+10;
int n,ans;
vector<int> vec[maxn<<1];
bool vis[maxn];

int dfs(int u,int fa){
    if(vec[u].size()>2) return u;
    for(auto v:vec[u]) if(v!=fa) return dfs(v,u);
    return u;
}

inline void solve(){
    n=read();ans=0;
    for(int i=1;i<=n;i++) vec[i].clear(),vis[i]=0;
    if(n==1) {
        puts("0");return;
    }
    for(int i=1,u,v;i<n;i++)
        u=read(),v=read(),vec[u].push_back(v),vec[v].push_back(u);
    for(int i=1;i<=n;i++)
        if(vec[i].size()==1) vis[dfs(i,0)]=true,ans++;
    for(int i=1;i<=n;i++) if(vis[i]) ans--;
    if(ans==0) puts("1");
    else printf("%d\n",ans);
}
int main(){
    int t=read();
    while(t--){
        solve();
    }
    return 0;
}