Statistics

Problem Statement for "TransformTheTree"

Problem Statement

You have a tree consisting of N nodes. The nodes are conveniently numbered 0 through N-1. You are given an int[] parents that consists of N-1 elements. For each 1 ≤ i < N, the parent of node i is node parents[i-1].

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

  1. {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.

  2. {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.

  3. {0, 0, 1, 2, 3, 4, 5, 6}

    Returns: 0

    The given tree is already a path.

  4. {}

    Returns: 0

  5. {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.

  6. {0, 1, 2, 0, 4, 5, 6, 4, 5, 6, 0, 11, 12}

    Returns: 2

  7. {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

  8. {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

  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

  10. {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

  11. {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

  12. {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

  13. {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

  14. {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

  15. {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

  16. {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

  17. {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

  18. {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

  19. {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

  20. {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

  21. {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

  22. {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

  23. {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

  24. {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

  25. {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

  26. {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

  27. {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

  28. {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

  29. {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

  30. {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

  31. {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

  32. {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

  33. {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

  34. {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

  35. {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

  36. {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

  37. {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

  38. {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

  39. {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

  40. {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

  41. {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

  42. {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

  43. {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

  44. {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

  45. {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

  46. {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

  47. {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

  48. {0, 1, 2, 2, 4, 4, 1, 7, 7, 0, 10, 11, 11, 10, 14, 14, 16, 16 }

    Returns: 4

  49. {0, 1, 1, 3, 4, 4, 0, 7, 7, 9, 9, 0, 12, 12 }

    Returns: 4

  50. {0, 1, 2, 0, 4, 5, 6, 4, 5, 6, 0, 11, 12 }

    Returns: 2

  51. {0, 1, 1, 3, 3, 0, 0, 7, 7 }

    Returns: 2

  52. {0, 1, 2, 2, 1, 5, 5, 7, 7 }

    Returns: 2

  53. {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

  54. {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

  55. {0, 1, 0, 0, 4, 4, 1, 7, 7 }

    Returns: 2

  56. {0, 0, 0, 2, 3, 5, 2, 6, 3, 6, 5 }

    Returns: 3

  57. {0, 1, 1, 0, 4, 4, 0, 7, 7 }

    Returns: 3

  58. {0, 0 }

    Returns: 0


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: