世界树上找米库
题号:NC296387
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

PJSK 的虚拟世界有若干个地点,这些地点通过一些道路形成了树形结构。你的目标,就是找到这个世界的“Miku”点。
        一共有 n 个地点,它们由 n-1 条长度为 1 的双向道路连成了一棵无根树结构。其中,如果一个地点只延伸出了一条道路,那么这个地点将称为 Sekai 点。

        Miku 点的定义如下:
  • Miku 点一定不是 Sekai 点。
  • Miku 点是符合上一个条件的所有地点中,与相距最近的 Sekai 点距离最大的点。
       
         根据以上信息,请你找出所有的 Miku 点吧!

输入描述:

    每个测试文件均包含多组测试数据。第一行输入一个整数 T \left(1 \le T \le 10^4\right) 代表数据组数,每组测试数据描述如下:
    第一行,输入一个正整数 n (3 \le n \le 2 \times 10^5),表示地点数。
    接下来 n-1 行,每行输入两个整数 u,v \ (1 \le u,v \le n, u \neq v) 代表一条双向道路。
    对于同一个测试点,保证所有 n 之和不超过 2 \times 10^5

输出描述:

    对于每组数据,第一行输出 Miku 点的个数,第二行按从小到大顺序所有 Miku 点的编号。
示例1

输入

复制
2
4
1 2
2 3
3 4
10
2 1
3 2
4 3
5 4
6 3
7 5
8 7
9 5
10 2

输出

复制
2
2 3
1
4

说明

    对于第一组样例,可以得知这棵树为 1\leftrightarrow2 \leftrightarrow 3 \leftrightarrow 4,其中 1,4 号点只延伸出了一条道路,所以它们是 Sekai 点。显然对于 2,3 号点,都只需要经过一条边,就可以到达 其中一个 Sekai 点,所以它们都是 Miku 点。
    对于第二组样例:
    观察这个图,可以发现除了 4 号点以外,其余要么是 Sekai 点,要么距离最近的 Sekai 点是 1。而距离 4 号点最近的 Sekai 点是 69 号点,距离为 2,所以输出 4 号点。