Network
UVALive - 3902
const int MAX=10010;
int n,s,k;
int t;
int cov[MAX];
int fa[MAX];
vector<int>g[MAX];
vector<int>hi[MAX];
void dfs(int u,int f,int h){
fa[u]=f;
int num=g[u].size();
if(num==1&&h>k)
hi[h].push_back(u);
for(int i=0;i<num;i++){
int v=g[u][i];
if(v!=f)
dfs(v,u,h+1);
}
}
void dfs1(int u,int f,int h){
cov[u]=1;
int num=g[u].size();
for(int i=0;i<num;i++){
int v=g[u][i];
if(h<k&&v!=f){
dfs1(v,u,h+1);
}
}
}
void solve(){
mms(cov,0);
int ans=0;
for(int i=n-1;i>k;i--)
for(int j=0;j<hi[i].size();j++){
int u=hi[i][j];
if(cov[u]) continue;
int v=u;
for(int l=0;l<k;l++)
v=fa[v];
dfs1(v,-1,0);
ans++;
}
cout<<ans<<endl;
}
int main(){
cin>>t;
while (t--) {
cin>>n>>s>>k;
for(int i=1;i<=n;i++){
g[i].clear();
hi[i].clear();
}
for(int i=0;i<n-1;i++){
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(s,-1,0);
solve();
}
}