树树

时间限制: 1秒      内存限制: 32768 KB

你给一个树的每个节点的权重,你需要找到这棵树的指定大小的最大子树。

树定义 
树是其中不包含任何周期的连通图。

输入

有在输入多个测试用例。

每种情况下的第一行是两个整数N(1 <= N <= 100),K(1 <= K <= N),其中N是该树的节点的数量,K是子树的大小,其次通过与N的非负整数,其中第k个整数表示第k个节点的权重的行。接下来的N - 1行描述了树,每行有两个整数这意味着在这两个节点之间的边缘。以上所有的指标都是零基础,这是保证树的描述是正确的。

产量

一行与对于每种情况,这是最大的子树的总权重的单个整数。

样例输入

3 1

10 20 30

0 1

0 2

3 2

10 20 30

0 1

0 2

样例输出

30

40

树型DP+背包问题!

f[i][j]表示以i为根结点有j个结点子树的最大权值。

以下代码仅供参考!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
#define MAX 105
vector<int> adj[MAX];
int f[MAX][MAX],tot[MAX],weight[MAX];
int ans,K;
int max(int a,int b)
{return a>b?a:b;
}
int DFS(int u,int father)
{tot[u]=1;int i,j,k,v;for(i=0;i<adj[u].size();i++){v=adj[u][i];if(v==father)    // 如果又回到了父节点的情况continue;tot[u]+=DFS(v,u);}f[u][1]=weight[u];for(i=0;i<adj[u].size();i++){v=adj[u][i];if(v==father)continue;for(j=tot[u];j>=1;j--){for(k=0;k<j&&k<=tot[v];k++){f[u][j]=max(f[u][j],f[u][j-k]+f[v][k]);}}}if(tot[u]>=K)ans=max(ans,f[u][K]);return tot[u];
}
int main()
{int N,i,u,v;while(~scanf("%d%d",&N,&K)){for(i=0;i<N;i++){scanf("%d",&weight[i]);adj[i].clear();}for(i=1;i<N;i++){scanf("%d%d",&u,&v);adj[u].push_back(v);adj[v].push_back(u);}memset(f,0,sizeof(f));ans=0;DFS(1,-1);printf("%d\n",ans);}return 0;
}

Zoj 3201 Tree of Tree相关推荐

  1. 转帖:BTree,B-Tree,B+Tree,B*Tree都是什么

    BTree,B-Tree,B+Tree,B*Tree都是什么 转帖自:http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspx &l ...

  2. # tree bash: tree: 未找到命令...

    今天使用CentOS7想查看tree,现象如下: [root@localhost 桌面]# tree bash: tree: 未找到命令- 显示找不到命令,后来发现原因是部分linux系统没有tree ...

  3. [置顶]B-tree/B+tree/B*tree [转]

    (原文出处: http://blog.csdn.net/hbhhww/article/details/8206846) B~树 1.前言: 动态查找树主要有:二叉查找树(Binary Search T ...

  4. ZOJ 3686 A Simple Tree Problem

    ZOJ月赛,题目描述确实很simple... 那么就是把一棵树转换为线性表,使得整个子树都在一个区间里.. 方法就是前序遍历了,遍历完一颗树它的根节点都连续的存在它后面了. 对于每一个节点要存它和它子 ...

  5. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结

    动态管理集合的数据结构--二叉搜索树 搜索树是一种可以进行插入,搜索,删除等操作的数据结构,可以用字典或者优先队列. 二叉排序树又称为二叉查找树,他或者为空树,或者是满足如下性质的二叉树. (1)若它 ...

  6. 5.30 Tree Traversal + Tree manipulation

    Binary Tree Preorder Traversal 题目:对一棵二叉树进行前序遍历,并将结果存在一个List 当中 思路:使用递归 细节: 对于递归版本:注意preorderTraversa ...

  7. BTree,B-Tree,B+Tree,B*Tree

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  8. GBRT(GBDT)(MART)(Tree Net)(Tree link)

    源于博客 GBRT(梯度提升回归树)有好多名字,标题全是它的别名. 它是一种迭代的回归树算法,由多棵回归树组成,所有树的结论累加起来得到最终结果.在被提出之初与SVM一起被认为是泛化能力较强的算法. ...

  9. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D

    小 Q 与树 给定一棵带权的树,每条边的距离都为111,要我们求∑u=1n∑v=1nmin(au,av)dis(u,v)\sum\limits_{u = 1} ^{n} \sum\limits_{v ...

最新文章

  1. 西瓜书——EM算法(一)
  2. vue 前端设置允许跨域_[web]记一次sanic+vue跨域问题
  3. vue2.x-cnode(vue全家桶)
  4. stackexchange.mysql_StackExchange.Redis客户端读写主从配置,以及哨兵配置。
  5. IIS、MySQL、Redis环境搭建
  6. html页面保存到本地文件路径,js上传文件到指定路径 jQuery或者js保存文件到本地...
  7. java基本数据类型字节大小,Java基本数据类型及所占字节大小
  8. 用户体验测试一样很重要
  9. oracle拆分分区语法详解大全_Oracle分区表详解
  10. 蜀山剑侠传打开服务器更新第一个文件失败,蜀山剑侠传,基础设定
  11. session 的钝化和活化
  12. 耳机插入电脑没反应找不到realtek音频管理器
  13. 木瓜从林。。。。。。。。。。。。。。。。。
  14. 【微信小程序】-- 页面导航 -- 编程式导航(二十三)
  15. 【人工智能】CB Insights:2018年全球人工智能发展趋势报告
  16. AT24C04【EEPROM】iic时序解读
  17. ORA-00392: log 15 of thread 1 is being cleared, operation not allowed
  18. Pulmonary--Detection5
  19. DY-SV17F语音播放模块应用篇一 【IO独立模式】
  20. joan sola_Joan Touzet在CouchDB和Apache方式上

热门文章

  1. 容器的使用(6-12)
  2. Symfony2中的命名约定
  3. es6学习笔记11--Proxy和Reflect
  4. 时间序列数据库的秘密(3)——加载和分布式计算
  5. [设计模式]设计模式之禅关于迪米特法则
  6. tenjin - 号称全球最快的模板引擎
  7. WebSphere通过corba调Tuxedo问题(2)
  8. 不要把时间画在抽奖上。。。去学习吧。。。
  9. Aidl进程间通信详细介绍
  10. 洛谷P1388 算式