http://blog.csdn.net/u014634338/article/details/42458007
#include<stdio.h>
#include <vector>
#include <iostream>
using namespace std;
const int N=100010;
int n,d,cnt;
vector<int>v[N];
void dfs(int j,int d)
{
if(d<0)
cnt++;
for (int i=0; i<v[j].size(); i++)
dfs(v[j].at(i), d-1);
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
scanf("%d%d",&n,&d);
cnt=0;
for (int i=0; i<=n; i++)
v[i].clear();
for (int i=1; i<n; i++)
{
int a,b;
scanf("%d%d",&a,&b);
v[a].push_back(b);
}
dfs(0, d);
printf("%d\n",cnt);
}
return 0;
}