测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A70778. 树的重心

编程题 基础

题目描述

给定一颗树,树中有 n 个结点(编号 1 \sim n )。 请你找到树的重心,并输出树的重心的结点编号。

重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中结点数的最大值最小,那么这个结点被称为树的重心。

如下图所示的树的重心为 1 号结点。

输入格式

1 行读入一个整数 n,代表树的结点的数量( 1≤n≤10^5 );

接下来 n-1 行,每行读入两个整数 xy ,表示结点 xy 之间有一条边(注意:不确定 xy 的父子关系)。

输出格式

请输出树的重心的结点编号,如果树有多个重心,请按照编号从小到大依次输出,数字之间用空格隔开。

输入输出样例

输入 #1
9
1 2
1 7
2 8
2 5
4 3
1 4
3 9
4 6
输出 #1
1

说明/提示

## 思路

「树的重心」建树后 DFS/BFS 统计深度、子树或求 LCA/直径。

## 步骤

1. 读入边并建树。
2. 从根遍历更新深度、父节点或子树大小。
3. 按题意输出询问结果。