#include <bits/stdc++.h>
#define pb push_back
#define YES cout<<"YES"<<'\n';
#define NO cout<<"NO"<<'\n';
using namespace std;
using ll = long long;
void solve()
{
ll n,k;cin>>n>>k;
queue<ll>e;
vector<ll>q[n+10],dep(n+10),vis(n+10),j(n+10);
ll x,y;
for(ll i=1;i<n;i++)
{
cin>>x>>y;
q[x].push_back(y);
q[y].push_back(x);
vis[x]++;
vis[y]++;
}
for(ll i=1;i<=n;i++)
{
if(vis[i]==1) //最外边
{
e.push(i);
j[i]++;
dep[i]=1;
}
}
while(e.size())
{
ll x=e.front();
e.pop();
for(auto ed:q[x])
{
if(vis[ed]==1) continue;//最外边
dep[ed]=dep[x]+1;//向内进一
if(--vis[ed]==1) e.push(ed);//最后一次入队
}
}
ll ans=0;
for(ll i=1;i<=n;i++)
{
if(dep[i]<=k) ans++;
}
cout<<n-ans<<'\n';
}
int main()
{
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio( false );
ll t;cin>>t;
while( t-- ) solve();
return 0;
}
Codeforces Round 748 (Div. 3)---E. Gardener and Tree--深搜变种+贪心+数据结构
于 2023-12-21 00:54:16 首次发布