import syssys.setrecursionlimit(2000)def dfs_size(node, parent, tree, size):size[node] = 1 # 当前节点算一个for neighbor in tree[node]:if neighbor != parent:dfs_size(neighbor, node, tree, size)size[node] += size[neighbor]def dfs_dp(node, parent, tree, size, n, min_dp, best_nodes):# 删除当前节点后的最大子树的大小max_subtree = 0total_size = 0for neighbor in tree[node]:if neighbor != parent:max_subtree = max(max_subtree, size[neighbor])total_size += size[neighbor]# 如果是根节点的情况,剩下的部分是总节点数减去当前节点的子树大小if parent == -1:max_subtree = max(max_subtree, n - size[node])else:max_subtree = max(max_subtree, n - size[node])# 计算每个节点的DP值,并更新最小DP和最优解if max_subtree摘要:import syssys.setrecursionlimit(2000)def dfs_size(node, parent, tree, size):size[node] = 1 # 当前节点算一个for neighbor in tree[node]:if
来源:科技与科学