树的重心
eIectron
优美的代码是成功AC的第一步。看着那么多博客不再更新,这就是我几年后的状态吗?要是走了就再也不回来了。
展开
-
POJ 1655 Balancing Act (树的重心)
点击打开链接 题意:给出一棵树,求树的重心的编号,并且输出最大子树的节点数目。如果有最大节点数目相同的情况,选取重心编号较小的输出。 树的重心:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 比如样例,删除节点1,那么就会生成三棵子树,每个子树的节点数目都是2,这就是最平衡的情况了。如果多增加一条6 - 8的边,那么依然是原创 2017-10-01 10:13:11 · 146 阅读 · 0 评论 -
POJ 3107 Godfather (树的重心模板题)
点击打开链接 题意:给出一棵树,求出所有树的重心,并且按编号从小到大输出。 直接套模板即可。 代码如下: #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn原创 2017-10-01 10:24:41 · 497 阅读 · 0 评论 -
POJ 1741 Tree (树分治模板题)
点击打开链接 题意:给出一棵树,求出两点之间距离小于等于k的点对数目。 解法:树的考查十分常见,原因就在于树有一般图不具备的约束条件。 如果这是一个一般图,我们想的是,做一次LCA,然后暴力两个点,看是否符合,复杂度达到O(n²),对于题目有1e4个点而且还是多组输入显然是无法接受的。 这时候我们就要想到树分治的思想。 求两个点的距离是否小于等于k,可以分为两种情况。 我们假定一个原创 2017-10-01 16:48:14 · 297 阅读 · 0 评论