题目大意
给定一个图, 问是否为连通图, 若不是, 则输出连通分量的数目. 否则, 以任一个点为根, 求树的最大深度, 输出这些根节点.
思路
- 用并查集检查图是否的连通图.
- 从任意一点进行dfs, 得到一个集合, 该集合的点即为 deepest root 的一部分.
- 从上一步的集合中任意一点进行dfs, 得到一个集合.
- 答案集合 即为 2, 3步的合集.
证明
设任一点为 A , 从点 A 到其他点的最大距离为 Lx, Lx 为局部最优解答, 由于图是连通的, 图中任意一点都可以到达点 A , 且距离 Ly < Lx. 因此 第一次 dfs 得到的解 为 最终解 的 部分解.
代码
|
|