「POJ-1655」Balancing Act
树形DP,树的重心(质心)
题意
树的重心(质心)。对于一棵n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的节点最小。
解法
先任选一个节点作为根,把无根树变成有根树,然后设d(i)表示以i为根的子树的节点个数。不难发现$d(i)=\sum_{j∈s(i)}d(j)+1$ 。删除节点i后,节点i的子树中最大有max{d(j)}个节点,i的“上方子树”中有n-d(i)个节点。
代码
1 |
|
「POJ-1655」Balancing Act
树形DP,树的重心(质心)
树的重心(质心)。对于一棵n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的节点最小。
先任选一个节点作为根,把无根树变成有根树,然后设d(i)表示以i为根的子树的节点个数。不难发现$d(i)=\sum_{j∈s(i)}d(j)+1$ 。删除节点i后,节点i的子树中最大有max{d(j)}个节点,i的“上方子树”中有n-d(i)个节点。
1 | #include <cstdio> |