## Root the Tree codechef lunchtime solution| codechef lunchtime problem editorial-

## Problem Statement->

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 ) such that it is possible to reach all vertices of the graph from by moving along the directed edges.

You are given a directed tree with vertices (numbered through ). 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?

### Input

- The first line of the input contains a single integer denoting the number of test cases. The description of test cases follows.
- The first line of each test case contains a single integer .
- Each of the next lines contains two space-separated integers and denoting that there is a directed edge from to in the tree.

### Output

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.

### Constraints

- the graph described on the input is a directed tree
- the sum of over all test cases does not exceed

### Subtasks

Subtask #1 (20 points): for each edge, or (the graph is a directed star)

Subtask #2 (80 points): original constraints

### Example Input

```
2
3
1 2
3 2
3
1 2
2 3
```

### Example Output

```
1
0
```

### Explanation

Example case 1: We can delete the edge from vertex to vertex and insert an edge from to . Then, the graph becomes a rooted directed tree with vertex 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 .

Problem link-https://www.codechef.com/LTIME88B/problems/ROOTTREE

solution->

According to this problem we have given a graph and we have to convert this graph to a rooted directed tree means every node should have only one incoming edge and 1 outgoing edge.

So my solution approach says that we will store the frequency of incoming edge of each vertex and

if I found incoming edge frequency greater then 1 so will delete this edge and add to the new node so my final answer will increase by ans+=freq[i]-1;

after doing the same for all vertex I will get my final answer.

my code is mentioned below. Please check it .

wait there is no need of creating any 2D boolean array sorry for that so delete that part of code.

## Comments

## Post a Comment