Problem Statement
You have a tree consisting of N nodes. The nodes are conveniently numbered 0 through N-1. You are given an
Your goal is to transform the tree into a path. In order to accomplish that you are allowed to use the following operation multiple times:
- Choose an edge {u, v}.
- Remove the edge {u, v} obtaining two trees T1 and T2 in this way -- T1 containing u and T2 containing v.
- Choose any node w from T1 and any node z from T2.
- Add the edge {w, z}.
Return the minimum number of operations needed to transform the given tree into a path.
Definition
- Class:
- TransformTheTree
- Method:
- countCuts
- Parameters:
- int[]
- Returns:
- int
- Method signature:
- int countCuts(int[] parents)
- (be sure your method is public)
Constraints
- N will be between 1 and 50, inclusive.
- parents will contain exactly N â 1 elements.
- For each i, parents[i] will be between 0 and i, inclusive.
Examples
{0, 0, 1, 2, 1}
Returns: 1
Initially, the tree contains the following edges: 0-1, 0-2, 1-3, 2-4, and 1-5. This tree is not a path, but we can change it into a path in a single operation. One optimal solution looks as follows: Remove the edge 1-5. This produces two trees: T1 is a path on five vertices and T2 is a single isolated vertex. Then, add the edge 4-5. Doing so produces the path 3-1-0-2-4-5.
{0, 0, 0, 0, 0, 0}
Returns: 4
One optimal sequence of operations looks as follows: Cut the edge 0-3, add the edge 2-3. Cut the edge 0-2, add the edge 1-2. Cut the edge 0-6, add the edge 5-6. Cut the edge 0-5, add the edge 4-5. After applying these operations the resulting tree is 3-2-1-0-4-5-6.
{0, 0, 1, 2, 3, 4, 5, 6}
Returns: 0
The given tree is already a path.
{}
Returns: 0
{0, 1, 2, 3, 2, 5, 0, 7, 8, 9, 8, 11}
Returns: 2
The following provides the minimum number of operations: Cut the edge 2-5, add the edge 6-10. Cut the edge 8-9, add the edge 5-12.
{0, 1, 2, 0, 4, 5, 6, 4, 5, 6, 0, 11, 12}
Returns: 2
{0, 1, 2, 3, 4, 5, 2, 7, 8, 9, 10, 9, 12, 13, 7, 15, 16, 9, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 22, 4, 36, 37, 38, 39, 40, 41, 42, 43, 44, 12, 46, 47, 48}
Returns: 5
{0, 1, 2, 3, 4, 5, 4, 7, 8, 9, 10, 3, 2, 13, 14, 0, 16, 8, 18, 19, 20, 21, 9, 23, 24, 25, 14, 24, 24, 26, 30, 31, 4, 33, 34, 22, 4, 37, 38, 32, 23, 22, 42, 43, 44, 45, 46}
Returns: 9
{0, 1, 2, 2, 4, 5, 6, 7, 1, 9, 10, 11, 6, 13, 2, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 6, 26, 27, 28, 29, 16, 31, 32, 33, 34, 35, 36, 37, 3, 39, 40, 41}
Returns: 5
{0, 0, 2, 2, 4, 5, 6, 7, 8, 7, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3, 25, 17, 23, 5, 29, 30, 31, 26, 33, 34, 35, 36, 37, 38, 39, 40}
Returns: 5
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 12, 13, 14, 15, 6, 17, 18, 19, 11, 21, 5, 23, 24, 25, 13, 27, 28, 29, 30, 31, 32, 19, 26, 35, 36, 37, 38, 39, 40, 41, 42}
Returns: 4
{0, 0, 2, 3, 0, 5, 6, 7, 8, 9, 10, 11, 1, 13, 1, 15, 16, 17, 18, 19, 20, 11, 13, 15, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 34, 35, 36, 20, 18, 39, 40, 41, 42, 43, 7}
Returns: 8
{0, 1, 2, 3, 4, 5, 5, 7, 8, 9, 10, 11, 12, 3, 14, 15, 16, 17, 9, 19, 20, 21, 11, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 7, 31, 37, 38, 39, 9, 41, 42}
Returns: 6
{0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 7, 23, 24, 25, 24, 27, 28, 29, 19, 31, 10, 33, 34, 35, 36, 35, 38, 39, 40, 21, 42, 43, 44}
Returns: 6
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 14, 15, 16, 17, 18, 5, 20, 21, 22, 23, 2, 25, 11, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37}
Returns: 5
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 18, 26, 27, 28, 29, 19, 31, 32, 33, 34, 35, 36, 37, 38, 9, 25, 29, 7, 43, 44, 32, 46}
Returns: 5
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41}
Returns: 0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47}
Returns: 0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42}
Returns: 0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39}
Returns: 0
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43}
Returns: 0
{0, 1, 2, 2, 4, 5, 6, 0, 8, 9, 9, 3, 2, 10, 6, 15, 16, 1, 5, 17, 20, 21, 14, 1, 13, 25, 24, 27, 28, 29, 30, 29, 28, 23, 0, 1, 11, 37, 32, 34, 19, 41, 42, 15, 7, 30, 46}
Returns: 9
{0, 0, 0, 3, 4, 5, 6, 7, 2, 2, 9, 1, 6, 10, 12, 10, 16, 17, 0, 19, 12, 21, 22, 18, 24, 25, 26, 9, 27, 9, 9, 20, 32, 14, 34, 35, 36, 36, 33, 28}
Returns: 9
{0, 1, 1, 3, 1, 1, 3, 4, 5, 9, 9, 6, 12, 3, 7, 15, 12, 17, 13, 19, 19, 2, 3, 23, 18, 17, 8, 13, 6, 29, 29, 24, 24, 18, 34, 12, 15, 34, 16, 39, 9}
Returns: 14
{0, 0, 0, 3, 4, 0, 6, 1, 3, 7, 1, 7, 12, 4, 6, 14, 16, 4, 11, 13, 8, 14, 22, 1, 24, 25, 26, 27, 4, 19, 14, 31, 30, 33, 2, 31, 1, 36, 29, 4, 1, 19, 19, 28}
Returns: 13
{0, 0, 2, 1, 3, 5, 3, 4, 8, 3, 10, 2, 12, 8, 7, 3, 4, 17, 7, 1, 18, 21, 9, 23, 2, 21, 9, 27, 19, 29, 30, 2, 1, 22, 0, 19, 36, 37, 32, 33, 40, 41, 16, 12, 31, 5}
Returns: 10
{0, 1, 0, 2, 0, 3, 0, 4, 2, 2, 9, 1, 10, 1, 1, 0, 0, 3, 8, 15, 0, 10, 2, 9, 9, 5, 6, 25, 23, 25, 4, 29, 26, 13, 27, 12, 26, 26, 29, 9, 34}
Returns: 15
{0, 0, 1, 1, 3, 4, 4, 6, 8, 7, 1, 11, 4, 6, 12, 4, 0, 15, 10, 0, 11, 13, 16, 21, 21, 21, 15, 2, 28, 23, 17, 28, 20, 33, 28, 22, 3, 5, 11, 16, 11, 41, 40}
Returns: 13
{0, 0, 2, 0, 3, 2, 6, 2, 7, 3, 0, 9, 12, 5, 5, 5, 11, 9, 2, 9, 16, 21, 17, 2, 8, 18, 17, 9, 10, 1, 9, 29, 9, 16, 23, 11, 23, 33, 3, 13, 28, 41, 41, 0, 36, 1, 37}
Returns: 15
{0, 1, 2, 3, 1, 3, 3, 2, 7, 0, 6, 1, 2, 12, 6, 7, 3, 8, 12, 19, 2, 9, 19, 20, 11, 14, 11, 5, 14, 15, 6, 1, 17, 33, 29, 28, 28, 7, 21, 0, 11, 8, 26, 25, 30, 13, 2}
Returns: 14
{0, 1, 0, 2, 2, 5, 5, 2, 0, 9, 3, 1, 2, 8, 14, 13, 5, 11, 12, 13, 20, 12, 10, 12, 8, 13, 15, 11, 5, 16, 1, 19, 7, 2, 30, 21, 34, 17, 19}
Returns: 11
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Returns: 47
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 12, 13, 6, 15, 16, 5, 18, 19, 20, 21, 19, 4, 24, 25, 26, 25, 28, 24, 30, 31, 3, 2, 34, 35, 1, 37, 0, 39, 40, 41, 42, 40, 44, 39, 46}
Returns: 7
{0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 10, 11, 4, 13, 14, 14, 3, 17, 18, 19, 17, 2, 22, 23, 24, 22, 26, 26, 1, 29, 30, 31, 32, 33, 34, 35, 32, 37, 31, 39, 40, 30, 29, 43, 44, 45, 43, 47}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 6, 9, 4, 11, 11, 3, 14, 15, 16, 15, 2, 19, 20, 21, 22, 23, 24, 23, 22, 20, 28, 19, 30, 1, 32, 33, 34, 35, 36, 35, 34, 39, 33, 32, 42, 43, 44, 45, 44, 42}
Returns: 11
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 11, 12, 11, 3, 15, 16, 15, 18, 2, 1, 21, 22, 23, 24, 25, 25, 23, 22, 29, 30, 21, 32, 32, 0, 35, 36, 37, 37, 35, 40}
Returns: 8
{0, 1, 2, 3, 4, 5, 6, 7, 4, 2, 10, 10, 1, 13, 14, 15, 15, 14, 13, 19, 19, 0, 22, 23, 24, 25, 26, 27, 28, 27, 23, 31, 32, 33, 34, 31, 22, 37, 38, 39, 37}
Returns: 8
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 9, 8, 7, 6, 16, 16, 4, 19, 20, 21, 19, 23, 3, 25, 26, 2, 1, 29, 30, 31, 32, 31, 0, 35, 36, 37, 38, 39, 40, 41, 40, 39, 37, 45, 45, 35, 48}
Returns: 10
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 8, 13, 7, 15, 16, 17, 18, 16, 5, 3, 22, 23, 24, 23, 2, 27, 28, 29, 30, 30, 28, 33, 33, 27, 36, 37, 37, 36, 40, 1, 42, 0, 44, 45, 46, 47, 46}
Returns: 12
{0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 5, 11, 4, 13, 14, 15, 13, 3, 18, 2, 20, 21, 22, 23, 24, 22, 21, 20, 28, 28, 1, 31, 32, 33, 34, 35, 36, 34, 38, 33, 32, 31, 42, 43, 44, 43, 0, 47, 48}
Returns: 10
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 12, 13, 4, 15, 15, 3, 18, 19, 20, 21, 22, 23, 20, 18, 2, 27, 28, 29, 30, 27, 32, 1, 34, 35, 36, 37, 35, 34, 40, 40, 0, 43, 44, 45, 46, 47, 44}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 11, 6, 4, 14, 15, 16, 17, 16, 15, 3, 21, 22, 2, 24, 25, 24, 1, 28, 29, 30, 31, 32, 33, 34, 35, 33, 32, 38, 30, 28, 41, 42, 43, 43, 41, 46, 47, 0}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 11, 6, 5, 14, 15, 4, 17, 18, 18, 17, 3, 22, 2, 24, 25, 26, 27, 28, 29, 26, 24, 32, 33, 33, 32, 36, 36, 1, 39, 0, 41, 42, 43, 44, 45, 43, 47, 42}
Returns: 10
{0, 1, 2, 3, 4, 5, 6, 7, 8, 6, 5, 11, 3, 13, 14, 15, 15, 13, 18, 2, 1, 21, 22, 23, 24, 25, 21, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 33, 32, 39, 40, 40, 30, 43, 44, 43, 28, 47, 48}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 8, 6, 15, 4, 3, 18, 19, 20, 21, 22, 23, 20, 25, 19, 27, 1, 29, 30, 31, 32, 33, 34, 33, 32, 37, 37, 30, 40, 41, 29, 43, 44, 45, 46, 43, 0}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 11, 12, 6, 14, 5, 16, 17, 18, 18, 4, 21, 2, 23, 24, 25, 23, 1, 28, 28, 0, 31, 32, 33, 34, 35, 36, 35, 38, 34, 33, 41, 32, 31, 44, 45, 46, 45, 44}
Returns: 9
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 9, 8, 15, 16, 16, 7, 19, 20, 6, 5, 23, 24, 25, 24, 27, 23, 29, 29, 4, 32, 33, 34, 35, 2, 37, 38, 1, 40, 41, 40, 0, 44, 45, 46, 45, 44}
Returns: 10
{0, 1, 2, 2, 4, 4, 1, 7, 7, 0, 10, 11, 11, 10, 14, 14, 16, 16 }
Returns: 4
{0, 1, 1, 3, 4, 4, 0, 7, 7, 9, 9, 0, 12, 12 }
Returns: 4
{0, 1, 2, 0, 4, 5, 6, 4, 5, 6, 0, 11, 12 }
Returns: 2
{0, 1, 1, 3, 3, 0, 0, 7, 7 }
Returns: 2
{0, 1, 2, 2, 1, 5, 5, 7, 7 }
Returns: 2
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
Returns: 47
{0, 1, 2, 1, 2, 5, 0, 5, 2, 7, 7, 5, 3, 12, 2, 2, 0, 10, 5, 19, 4, 4, 12, 2, 18, 12, 21, 4, 25, 16, 24, 28, 12, 10, 14, 5, 29, 11, 7, 15, 38, 12, 40, 18, 44, 8, 36 }
Returns: 16
{0, 1, 0, 0, 4, 4, 1, 7, 7 }
Returns: 2
{0, 0, 0, 2, 3, 5, 2, 6, 3, 6, 5 }
Returns: 3
{0, 1, 1, 0, 4, 4, 0, 7, 7 }
Returns: 3
{0, 0 }
Returns: 0