CF2183D2 Tree Coloring (Hard Version)
Description
This is the Hard version of the problem. The difference between the versions is that in this version, you must find the minimum number of operations and find a way to color the tree using that many operations. You can hack only if you solved all versions of this problem.
You are given a rooted tree $ ^{\text{∗}} $ consisting of $ n $ vertices numbered from $ 1 $ to $ n $ , where the root has index $ 1 $ , and each vertex is initially white. Define $ d_i $ as the distance from the root to the $ i $ -th vertex. You can perform the following operations any number of times:
1. Select a subset $ S $ of white vertices such that no two nodes in $ S $ are connected by an edge, or have the same distance to node $ 1 $ . Formally, $ S $ should satisfy for all $ x,y\in S $ and $ x\neq y $ , $ d_x\neq d_y $ , and there are no edges between $ x $ and $ y $ .
2. Color the vertices in $ S $ black.
Your job is to find the minimum number of operations required to color the full tree black and find a way to perform the operations.
$ ^{\text{∗}} $ A tree is a connected graph without cycles. A rooted tree is a tree where one vertex is special and called the root.
Input Format
Each test contains multiple test cases. The first line contains the number of test cases $ t $ ( $ 1 \le t \le 10^4 $ ). The description of the test cases follows.
The first line of each test case contains a single integer $ n $ ( $ 2\le n\le 2\cdot 10^5 $ ) – the number of vertices in the tree.
The $ i $ -th following $ n-1 $ lines contain two integers $ u_i $ and $ v_i $ ( $ 1\le u_i,v_i\le n $ , $ u_i\neq v_i $ ) — the ends of the $ i $ -th edge.
It is guaranteed that the given edges form a tree.
It is guaranteed that the sum of $ n $ over all test cases doesn't exceed $ 2\cdot10^5 $ .
Output Format
For each test case:
- Output your number of operations $ k $ on the first line ( $ 1 \leq k \leq n $ ).
- Then, output $ k $ lines. Each line should begin with an integer $ m $ representing the size of the operation's set ( $ 0 \leq m \leq n $ ). After that, there should be $ m $ numbers $ u_1,u_2,\ldots,u_m $ ( $ 1 \leq u_i \leq n $ ) representing the $ m $ nodes you color black in this operation.
You should guarantee that:
- Each operation you make is valid.
- You don't color the same vertex twice (in the same operation or in different operations).
- At the end of all operations, all vertices are colored black.
- The number of operations you performed is $ x $ , where $ x $ is the minimum possible number of operations over all possible solutions.
If there are multiple possible solutions, output any.
Explanation/Hint
In the first test case, $ d_1=1 $ and $ d_2=d_3=d_4=d_5=2 $ . We can show that we must perform at least $ 5 $ operations because there are no two nodes that can be operated on simultaneously.
In the second test case, we can show that the least number of operations required to color the full tree is $ 4 $ . The example output shows one way to color it in $ 4 $ operations.