[D - Arboris Contractio](https://codeforces.com/contest/2131/problem/D)
思路:
- 要获得最小直径,经过一番思考发现从任意根节点出发的操作次数是深度超过1的叶子节点的个数,要获得最小操作数,要找到某一个节点作为根节点,其周围深度为1的叶子节点数最多(当然也可以包括自己,这样就不用特判$n\le2$的情况了),操作数就最小。
- 快速判断叶子节点的数量,在输入的过程中记录所有节点的入度,之后遍历的过程中入度为1的节点就是叶子。
- 快速判断周围深度为1的叶子节点最多,也是在遍历的过程中,对每个点的周围点进行叶子节点判断就可以了