很水的一个题目,但一开始却错误理解题意,以为“人”要自己去找宠物,去几个点让后在与该点的距离小于D时,找到宠物。可?。。。。。看题很重要啊!理解题意很重要啊!
# include<cstdio>
# include<vector># define maxn 100000
using namespace std;
int T,N,D,num;
vector<int>G[maxn];
int vis[maxn],dis[maxn];
void dfs(int u,int dep)
{
vis[u]=1;
for(int i=0;i<G[u].size();i++)
{
int v=G[u][i];
if(!vis[v])
{
dis[v]=dep+1;
dfs(v,dep+1);
}
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
for(int i=0;i<maxn;i++)
{
G[i].clear();
vis[i]=0;
dis[i]=0;
}
num=0;
scanf("%d %d",&N,&D);
int x,y;
for(int i=0;i<N-1;i++)
{
scanf("%d %d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
}
dfs(0,0);
for(int i=0;i<N;i++)
if(dis[i]>D)
num++;
printf("%d\n",num);
}
return 0;
}