抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

定义一棵树上两个点等价当且仅当以这两个点为根的有根树同构,一棵树的权值定义为这棵树的等价类个数。

给出一棵 nn 个点的树,可以在这棵树基础不断的加叶子,使得最后树的权值最小,求出这个权值,以及满足之前条件的所有树中最小叶子数。

数据范围 n100n\le 100

我们发现其实最终所得的树只有两种,一种是以一条边为中心,左右两边同构,一种是以点为中心,呈放射状分布。

其实这两种都一样,以边为放射状的只要把这条边看成一个点就可以了。

这样我们考虑枚举中心,要求其权值,首先不难发现同构的数量其实就是以中心为根的树的深度。然后我们考虑叶子个数,我们只要想想构造这棵树的过程,其实就是把每一层深度的所有点的儿子数补成相同,那么补完后树的叶子个数就是每层非叶子节点儿子个数的乘积,对于原树来讲就是每层儿子树最多的儿子个数的乘积。

复杂度 O(n2)\mathcal{O}(n^2),开 100100 大概是为了不爆 long long

这里是代码

评论