1 solutions

  • 0
    @ 2025-5-31 11:28:19
    #include<bits/stdc++.h>
    using namespace std;
    const int N=100010;
    vector<int> g[N]; //g[x]储存x的所有边 
    int n,d,ans=0;
    void dfs(int u,int fa,int dep) //当前遍历到u节点,u的父亲是fa,深度是dep 
    {
    	if(dep<=d) //满足要求 
    	{
    		ans++;
    	}
    	for(auto j:g[u]) //访问u的所有孩子节点 
    	{
    		if(j==fa) continue; //往回访问 
    		dfs(j,u,dep+1);
    	}
    }
    int main()
    {
    	cin>>n>>d;
    	for(int i=1;i<n;i++)
    	{
    		int a,b;
    		cin>>a>>b;
    		g[a].push_back(b); //a可以走到b 
    		g[b].push_back(a); //b可以走到a 
    	}
    	dfs(1,-1,0);//1号点的父亲是-1(不存在),当前深度是0
    	cout<<ans-1; 
    	return 0;
    }

    Information

    ID
    1030
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    16
    Accepted
    4
    Uploaded By