博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ树形DP专题之Tree Cutting
阅读量:4616 次
发布时间:2019-06-09

本文共 673 字,大约阅读时间需要 2 分钟。

题目大意:给定一棵树,求移除树中哪些结点后,剩下的结点最多的连通支的结点数目不超过原树总结点的一半。

分析:先用dfs将无根树转为有根树,在一棵有根树中,去掉某个结点后,剩余的分支为儿子结点所在的分支和父亲结点所在的分支,取结点数目最多的一支即可。

View Code
1 #include 
2 #include
3 #include
4 #define N 10000 5 #define MAX(a,b) ((a)>(b)?(a):(b)) 6 using namespace std; 7 vector
g[N],dep[N]; 8 int p[N],d[N],cnt[N],sum[N],n,dmax; 9 void dfs(int u,int fa)10 {11 int i,v;12 d[u]=(fa==-1?0:d[fa]+1);13 dmax=MAX(dmax,d[u]);14 dep[d[u]].push_back(u);15 for(i=0;i
=0;i--)27 {28 for(j=0;j

 

转载于:https://www.cnblogs.com/algorithms/archive/2012/05/02/2479609.html

你可能感兴趣的文章
LeetCode 4Sum
查看>>
哈夫曼树
查看>>
JS计算日期差
查看>>
2017最新高清仿驴妈妈旅行网大数据分析项目实战演练培训视频 228课
查看>>
数据结构综合性实验:多种功能的平衡二叉排序树
查看>>
[九度OJ]1011.最大连续子序列
查看>>
羊车门(作业)
查看>>
对C#中的Close()和Dispose()的浅显理解
查看>>
【手记】小心在where中使用NEWID()的大坑
查看>>
创建添加表格
查看>>
Javascript触屏手势库-JTouch
查看>>
Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
查看>>
Struts2日期类型转换
查看>>
树的遍历
查看>>
iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
查看>>
排序算法之 Non-recursive Merge Sort
查看>>
初识Spring框架IOC属性注入
查看>>
MVC中子页面如何引用模板页中的jquery脚本
查看>>
将Eclipse代码导入到AndroidStudio的两种方式
查看>>
【文档管理系统】【转】什么是元数据
查看>>