1 条题解

  • 0
    @ 2024-9-8 21:13:43
    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 5e4 + 5;
    int n, k, f[maxn][505], ans;
    vector<int> g[maxn];
    
    void dfs(int u, int p) {
    	f[u][0] = 1;
    	for (auto v : g[u]) {
    		if (v != p) {
    			dfs(v, u);
    			for (int i = 0; i < k; i++)
    				ans += f[v][i] * f[u][k-1-i];
    			for (int i = 0; i < k; i++)
    				f[u][i+1] += f[v][i];
    		}
    	}
    }
    
    int main() {
    	scanf("%d%d", &n, &k);
    	for (int i = 1; i < n; i++) {
    		int u, v;
    		scanf("%d%d", &u, &v);
    		g[u].push_back(v);
    		g[v].push_back(u);
    	}
    	dfs(1, -1);
    	printf("%d\n", ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    27
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    9
    已通过
    6
    上传者