一道简单的搜索题目,建一个树,根节点是 0 ,连接的两个节点的距离是 1 ,求 到 根节点长度是2的节点的个数。
#include<stdio.h> #include<string.h> struct node{ int next,to; int step; }; node edge[100010]; int tot; int head[100010]; int N,D,ans; void Add(int x,int y) { edge[tot].to=y; edge[tot].next=head[x]; head[x]=tot++; } void DFS(int x,int step) { if(head[x]==-1) return ; for(int i=head[x];i!=-1;i=edge[i].next) { int y=edge[i].to; edge[i].step=step+1; if(edge[i].step>D) ans++; DFS(y,edge[i].step); } } int main() { int T; int x,y; scanf("%d",&T); while(T--) { memset(head,-1,sizeof(head)); memset(edge,0,sizeof(edge)); ans=0; tot=0; scanf("%d%d",&N,&D); for(int i=0;i<N-1;i++) { scanf("%d%d",&x,&y); Add(x,y); } DFS(0,0); printf("%d ",ans); } return 0; }