Codeforces 685B Kay and Snowflake 树的重心

来源:互联网 发布:淘宝店铺模版怎么修改 编辑:程序博客网 时间:2024/05/16 14:06

题意:给一棵树,每次查询以点v为根节点的子树的重心。

题解:这里用到的性质是:重心在当前节点到他重儿子为根的子树,重心之间的路径上。

我是这样想,若一个根节点有n棵子树,那么其重心肯定在size最大的那一棵子树上,所以重心就在这棵子树的重心与当前根之间的路径上。

那我们只要从这个重心开始向上搜,那么第一个满足条件的就是重心。

条件为:size[u] - size[重心] *2<=size[u]) ,即以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。

代码:传送门

0 0