#CF1667D. 边消除

边消除

边消除

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一棵包含 nn 个顶点的树。如果两条边恰好共享一个端点,则称这两条边相邻。

一次操作中,你可以删除任意一条边,但删除时这条边必须恰好与偶数条尚未删除的边相邻。

请给出删除全部边的操作顺序,或判断不存在这样的顺序。

输入格式

第一行包含一个整数 tt,表示测试用例数。

对于每组测试用例:

  • 第一行包含一个整数 nn;
  • 接下来 n−1n-1 行,每行包含两个整数 ui,viu_i,v_i,表示树的一条边。

输出格式

对于每组测试用例,若无法删除全部边,输出一行 NO。

否则输出一行 YES,再输出 n−1n-1 行。每行输出一条边的两个端点,所有行依次表示边的删除顺序。端点顺序任意。

样例输入

5
2
1 2
3
1 2
2 3
4
1 2
2 3
3 4
5
1 2
2 3
3 4
3 5
7
1 2
1 3
2 4
2 5
3 6
3 7

样例输出

YES
2 1
NO
YES
2 3
3 4
2 1
YES
3 5
2 3
2 1
4 3
NO

数据范围

1≤t≤1051\le t\le10^5,2≤n≤2⋅1052\le n\le2\cdot10^5,1≤ui,vi≤n1\le u_i,v_i\le n。

输入保证每组图均为树,且所有测试用例中的 nn 之和不超过 2⋅1052\cdot10^5。

子任务编号 分值 特殊限制
1 20 每组 n≤12n\le12
2 每个顶点的度数不超过 22
3 每组 n≤4000n\le4000
4 40 无特殊限制