洛谷P4781 题解公式 inline int FastPow(int x, int y) { if (y == 1) return x; if (!y) return 1; int tmp = FastPow(x, y >> 1) % mod; return tmp * tmp % mod * (y & 1 ? x : 1) % mod; } inline void Lagrange() { go(i, 1, n, 1) { up = down = 1; go(j, 1,

Read More

题目传送门 性质 删除重心后所得的所有子树,节点数不超过原树的1/2,一棵树最多有两个重心;2.树中所有节点到重心的距离之和最小,如果有两个重心,那么他们距离之和相等; 两个树通过一条边合并,新的重心在原树两个重心的路径上; 树删除或添加一个叶子节点,重心最多只移动一条边; 一棵树最多有两个重心,且相邻。 思路 如果找到只有一个重心,那么直接删一个重心的直连边然后加回去就好了。 如果找到两个重心,那么在其中一个重心上找到一个直连点不是另一个重心,删除连另外一个就好了。 如何求树的重心? 先任选一

Read More