# Subtree Center solution codechef

## Subtree Center solution codechef

You are given a tree with NN nodes (numbered 11 through NN) and QQ queries (numbered 11 through QQ). For each valid ii, in the ii-th query, you are given KiKi nodes x1,x2,,xKix1,x2,…,xKi. Consider the smallest subtree which contains all of these nodes; you should find all centers of this subtree.

A node is called a center of a tree if it lies in the middle of at least one longest path in that tree. Note that there may be multiple longest paths (paths with the same maximum length) and for a longest path which contains an even number of nodes, there are two nodes lying in the middle of this path.

### Input Subtree Center solution codechef

• The first line of the input contains a single integer TT denoting the number of test cases. The description of TT test cases follows.
• The first line of each test case contains two space-separated integers NN and QQ.
• N1N−1 lines follow. For each valid ii, the ii-th of these lines contains two space-separated integers uu and vv denoting that there is an edge between nodes uu and vv in the tree.
• QQ more lines follow. For each valid ii, the ii-th of these lines contains an integer KiKi, followed by a space and KiKi space-separated integers x1,x2,,xKix1,x2,…,xKi.

Note: The input and output of this problem are large, so prefer using fast input/output methods.

### Output Subtree Center solution codechef

For each query, print a single line containing an integer CC denoting the number of centers, followed by a space and CC space-separated integers — the nodes which are centers of the given subtree, sorted in increasing order.

### Constraints Subtree Center solution codechef

• 1T1051≤T≤105
• 1N1051≤N≤105
• 1u,vN1≤u,v≤N
• the graph described on the input is a tree
• 1Q1061≤Q≤106
• 1xiN1≤xi≤N for each valid ii
• for each query, x1,x2,,xKix1,x2,…,xKi are pairwise distinct
• the sum of NN over all test cases does not exceed 51055⋅105
• the sum of KiKi over all queries in all test cases does not exceed 106106

### Example Input Subtree Center solution codechef

2
3 2
1 2
2 3
2 1 3
2 1 2
5 2
1 2
2 3
2 4
3 5
1 2
2 4 5


### Example Output Subtree Center solution codechef

1 2
2 1 2
1 2
2 2 3


### Explanation Subtree Center solution codechef

Example case 1: The figure below describes the second query. The smallest subtree containing the given nodes is coloured red and the nodes which are its centers are coloured blue.

Example case 2: The figure below describes the second query with subtree and centers coloured in the same way.

# SOLUTION

#### What’s in it for you?

The idea behind these programming contests is that we want you to learn while competing. Also we believe that it is alright to refer to tutorials, books and other materials, learn a concept and then apply the same to solve a problem during a contest. But it is not alright to copy other people’s solutions or seek other people’s help to solve a problem without understanding it.

The dividing line may seem to be thin but it can be captured by the spirit of learning. If whatever you are doing is making you learn while you do so, we tend to believe that it is alright. Our sole intention lies in making our users learn new concepts while competing. However, all the participants are expected to abide to

#### What’s new in CodeChef?

You may now play with our new groups & LaTex feature on discuss.

• Please do not discuss strategy, suggestions or tips in the comments during a live contest. Posting questions clarifying the problem statement is ok. If you are unsure, email us at [email protected] .
• Discussing CodeChef’s problems or any aspect of problem, on any other platform on web, on identification, could lead to disabling of respective account and banning from the community.
• You can also send in your queries in an email to [email protected], during the contest.
• You will receive one point for solving a problem (passing all test cases – no partial credit), regardless of the level of difficulty of that problem.
• Users are ranked according to the most problems solved. Ties will be broken by the total time for each user in ascending order of time.
• The total time is the sum of the time consumed for each problem solved. The time consumed for a solved problem is the time elapsed from the beginning of the contest to the submittal of the first accepted run plus 10 penalty minutes for every previously rejected run for that problem. There is no time consumed for a problem that is not solved.
• You shall not possess more than one account on CodeChef. If you have, then do let us know, so that we can deactivate the insignificant one. If you do not report it and we come to know about it, we may deactivate both the accounts permanently.
• If anyone is using code from some other source in his submission, he should provide proper attribution. Failing this, it may be considered plagiarism and the submission will be subject to disqualification.
• The number of submissions that one can make during the contest on a single problem will be limited to 500.
• Residents of the following countries and territories are not eligible to win cash prizes/laddus/goodies due to legal restrictions: Albania, The Bahamas, Barbados, Botswana, Cambodia, Crimea region of Russia, Cuba, Ghana, Iceland, Iran, Jamaica, Mauritius, Mongolia, Myanmar, Nicaragua, North Korea, Pakistan, Panama, Sudan, Syria, Uganda, Yemen, Zimbabwe.

Note: You can now “Code, Compile, and Run” your codes on our Online IDE.

However, if you are using any other online development environment, make sure that other contestants don’t have access to your code. As a contestant, you are responsible for making sure others don’t access the code that you submit. If you use Ideone, make sure to mark your submission “private” (not secret)”.