求助
查看原帖
求助
1126733
lxc129楼主2024/7/9 22:21
#include<bits/stdc++.h>
using namespace std;
struct node{int l=0,r=0;}g[100001];
int n,d,u,v,vis[100005]; 
int dfs(int rt,int cur){
	int ans=0;
	vis[rt]=1;
	if (cur>d) return 0;
	if (!g[rt].l && !g[rt].l) return 1; 
	if (g[rt].l && !vis[g[rt].l]) ans+=dfs(g[rt].l,cur+1);
	if (g[rt].r && !vis[g[rt].r]) ans+=dfs(g[rt].r,cur+1);
	return ans+1;
}
int main(){
	cin>>n>>d;
	for (int i=1;i<n;i++){
		cin>>u>>v;
		if (!g[u].l) g[u].l=v;
		else g[u].r=v;
		if (!g[v].l) g[v].l=u;
		else g[v].r=v;
	}
	vis[1]=1;
	cout<<dfs(1,0)-1;
}
2024/7/9 22:21
加载中...