题目大意
一棵 个点的无根树,求这棵树的一个联通子图,使得它的直径数目最多。输出这个最大值。
树的直径有以下两条性质:
从树上任意一个点 ,所到达的所有最远的点都是直径的端点;
树的所有直径必交于某一点或某条边。
为什么所有直径必有公共部分?下面是证明:
若两条直径没有交点,而在一棵树上任意两个点都是连通的,因此可以让这两条直径的端点连通,得到一条更长的直径;
若三条直径有两个交点,如图:
由于 ,所以 ,同理 ,因此 和 不是直径;
多条直径跟三条直径一样证明。
因此可以 枚举这个交点或边,每次 ,统计在某一距离时,跨过这个点或边的路径数目,所有答案取 。
时间复杂度 。