PetTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1435 Accepted Submission(s): 692
Problem Description
On
Input
The input contains multiple test cases. Thefirst line is a positive integer T (0<T<=10), the number of test cases. For each test cases, the first line has two positive integer N (0<N<=100000) and D(0<D<N), separated by a single space. N is the number of locations in the school and D is the affective distance of the trap. The following N-1lines descripts the map, each has two integer x and y(0<=x,y<N), separated by a single space, meaning that x and y is adjacent in the map. Lin Ji’s room is always at location 0.
Output
For each test case, outputin a single line the number of possible locations in the school the hamster may be found.
Sample Input
Sample Output
Source
Recommend
|
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
#include<list>
#include<deque>
#include<map>
#include <stdio.h>
#include <queue>
#include <stack>
#define maxn 10000+5
#define ull unsigned long long
#define ll long long
#define reP(i,n) for(i=1;i<=n;i++)
#define rep(i,n) for(i=0;i<n;i++)
#define cle(a) memset(a,0,sizeof(a))
#define mod 90001
#define PI 3.141592657
#define INF 1<<30
const ull inf = 1LL << 61;
const double eps=1e-5;
using namespace std;
bool cmp(int a,int b){
return a>b;
}
vector<int>edge[100002];
int len[100002],n,d,ans;
void bfs()
{
queue<int>q;
q.push(0);
len[0]=0;
int u,v;
while(!q.empty())
{
u=q.front();q.pop();
for(int i=0;i<edge[u].size();i++)
{
v=edge[u][i];
len[v]=len[u]+1;
q.push(v);
}
}
for(int i=0;i<n;i++)
if(len[i]>d)ans++;
printf("%d\n",ans);
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t;
int x,y;
cin>>t;
while(t--)
{
ans=0;
scanf("%d%d",&n,&d);
for(int i=0;i<n;i++)
{
edge[i].clear();
//len[i]=INF;
}
for(int i=1;i<n;i++)
{
scanf("%d%d",&x,&y);
edge[x].push_back(y);
//edge[y].push_back(x);
}
bfs();
}
return 0;
}