题目链接:http://codeforces.com/problemset/problem/161/D

题意:给出一个树,问树上点到点的距离为k的一共有几个。

一道简单的树形dp,算是一个基础题。

设dp[i][len]表示i为根距离为len的一共有几个点。

一般的树形dp都是先dfs然后再更新dp的值,注意按这样写就行了。而且一般的树形dp都是设dp[i][k]i为根,k为条件。

void dfs(int u , int pre) {

int len = vc[u].size();

dp[u][0] = 1;

for(int i = 0 ; i < len ; i++) {

int v = vc[u][i];

if(v == pre)

continue;

dfs(v , u);

for(int j = 0 ; j < k ; j++) {

ans += dp[v][j] * dp[u][k - j - 1];

}

for(int j = 1 ; j <= k ; j++) {

dp[u][j] += dp[v][j - 1];

}

}

}

  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. #include <vector>
  5. using namespace std;
  6. const int M = 5e4 + 10;
  7. vector<int>vc[M];
  8. int dp[M][510];
  9. int n , k , x , y , ans;
  10. void dfs(int u , int pre) {
  11. int len = vc[u].size();
  12. dp[u][0] = 1;
  13. for(int i = 0 ; i < len ; i++) {
  14. int v = vc[u][i];
  15. if(v == pre)
  16. continue;
  17. dfs(v , u);
  18. for(int j = 0 ; j < k ; j++) {
  19. ans += dp[v][j] * dp[u][k - j - 1];
  20. }
  21. for(int j = 1 ; j <= k ; j++) {
  22. dp[u][j] += dp[v][j - 1];
  23. }
  24. }
  25. }
  26. int main() {
  27. scanf("%d%d" , &n , &k);
  28. for(int i = 0 ; i < n - 1 ; i++) {
  29. scanf("%d%d" , &x , &y);
  30. vc[x].push_back(y);
  31. vc[y].push_back(x);
  32. }
  33. memset(dp , 0 , sizeof(dp));
  34. ans = 0;
  35. dfs(1 , 0);
  36. printf("%d\n" , ans);
  37. return 0;
  38. }

codeforces 161 D. Distance in Tree(树形dp)的更多相关文章

  1. Codeforces 161 D. Distance in Tree (树dp)

    题目链接:http://codeforces.com/problemset/problem/161/D 题意: 给你一棵树,问你有多少对点的距离为k. 思路: dp[i][j]表示离i节点距离为j的点 ...

  2. codeforces 161D Distance in Tree 树形dp

    题目链接: http://codeforces.com/contest/161/problem/D D. Distance in Tree time limit per test 3 secondsm ...

  3. VK Cup 2012 Round 1 D. Distance in Tree (树形dp)

    题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5 ...

  4. CF 161D Distance in Tree 树形DP

    一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...

  5. 熟练剖分(tree) 树形DP

    熟练剖分(tree) 树形DP 题目描述 题目传送门 分析 我们设\(f[i][j]\)为以\(i\)为根节点的子树中最坏时间复杂度小于等于\(j\)的概率 设\(g[i][j]\)为当前扫到的以\( ...

  6. Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)

    题目:http://codeforces.com/contest/1153/problem/D 题意:给你一棵树,每个节点有一个操作,0代表取子节点中最小的那个值,1代表取子节点中最大的值,叶子节点的 ...

  7. Codeforces Round #263 Div.1 B Appleman and Tree --树形DP【转】

    题意:给了一棵树以及每个节点的颜色,1代表黑,0代表白,求将这棵树拆成k棵树,使得每棵树恰好有一个黑色节点的方法数 解法:树形DP问题.定义: dp[u][0]表示以u为根的子树对父亲的贡献为0 dp ...

  8. codeforces Round #263(div2) D. Appleman and Tree 树形dp

    题意: 给出一棵树,每个节点都被标记了黑或白色,要求把这棵树的其中k条变切换,划分成k+1棵子树,每颗子树必须有1个黑色节点,求有多少种划分方法. 题解: 树形dp dp[x][0]表示是以x为根的树 ...

  9. hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)

    题目链接: Magic boy Bi Luo with his excited tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: ...

随机推荐

  1. abp(net core)+easyui+efcore实现仓储管理系统目录

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  2. Discuz论坛 自动加好友留言程序

    目录 [隐藏] 1 思路: 2 代码: 2.1 登录,获取Cookie: 2.2 获取FormHash: 2.3 发送加好友请求并留言: 思路: 一波未平一波又起, 拿到这个需求的时候对我来说还是有挑 ...

  3. JSON合并,并按时间排序

    mergeJson: function (json1, json2) { var json = Object.assign([], json1, json2); return json.sort(fu ...

  4. MySQL多表(理论知识总结)

    1. 多表关系    外键    foreign key    添加外键语法:    alter table 表名1 add foreign key(外键名称) references 表名2(主键名称 ...

  5. Postgresql部署及简单操作

    PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS),在开源数据库使用上与MySQL各领风骚.但也有不少人质疑postgresql的未来,正所谓,赞扬或批判一种数据库都必须先 ...

  6. 安装yarn实况

    [**前情提要**]最近在gayhub上面得到一个开源项目,遂准备研究一下源码,当然第一步就是要把项目运行起来.然后看了一下技术栈,发现包管理工具是使用yarn,以前也听说过yarn但是也没有具体使用 ...

  7. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  8. maven的不同版本下载及环境配置

    Maven不同版本下载及环境配置 Maven下载 去到官网 https://maven.apache.org/ 会发现是最新版本,但是一般下载的话,都会下载比最新的版本要低两到三个小版本的,这里就下载 ...

  9. SpringBoot学习------SpringBoot使用Thymleaf模块访问不了静态页面

    SpringBoot使用Thymleaf模块访问不了静态页面 最近学习SpringBoot的过程中使用了Thymeleaf模块引擎,页面发送请求后老是无法显示静态页面,所有的步骤都是参考资料来执行,自 ...

  10. springBoot入门教程(图文+源码+sql)

    springBoot入门 1   springBoot 1.1 SpringBoot简介 Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运行一个Spr ...