Root the Tree codechef lunchtime solution| codechef lunchtime problem editorial-
A directed tree is a directed graph such that if all edges were undirected, this graph would be a tree. A rooted directed tree is a directed tree in which there is one vertex (the root, let's denote it by r) such that it is possible to reach all vertices of the graph from r by moving along the directed edges.
You are given a directed tree with N vertices (numbered 1 through N). You may perform the following operation on it any number of times (including zero):
Choose some edge which currently exists in the graph.
Remove this edge.
Add a new edge in such a way that the graph becomes a directed tree again.
What is the smallest number of operations which need to be performed in order to make the directed tree rooted?
The first line of the input contains a single integer T denoting the number of test cases. The description of T test cases follows.
The first line of each test case contains a single integer N.
Each of the next N−1 lines contains two space-separated integers u and v denoting that there is a directed edge from u to v in the tree.
For each test case, print a single line containing one integer ― the smallest number of operations we need to perform to create a rooted directed tree.
the graph described on the input is a directed tree
the sum of N over all test cases does not exceed 105
Subtask #1 (20 points): for each edge, u=1 or v=1 (the graph is a directed star)
Subtask #2 (80 points): original constraints
Example case 1: We can delete the edge from vertex 3 to vertex 2 and insert an edge from 3 to 1. Then, the graph becomes a rooted directed tree with vertex 3 as the root. However, there are many other possible solutions.
Example case 2: The graph is already a rooted directed tree; the root is vertex 1.