题目大意:给一棵树,求树上两点之间距离为K的点对数目。
方程含义:
dp(i,j)表示从已经遍历过的点到当前点i,路径长度为 j 的路径条数。因此,对于当前点,每当遍历了其中一个儿子节点的时候,首先统计当前情况下的结果,然后要更新dp(i, j)
初始条件dp(i,0)= 1
#include#include #include using namespace std;#define N 50005vector g[N];int dp[N][505], n, k, ans;void dfs(int now, int fa) { for (int i=1; i<=k; i++) dp[now][i] = 0; dp[now][0] = 1; int u; for (int i=0; i