Minimum Edge Reversals to Root a Tree
You are given a directed version of a tree with n nodes labeled from 0 to n - 1. Each undirected edge of the tree appears once in the input as a directed edge u -> v.
You may choose any node as the root. After choosing the root, every edge should point away from that root. You may reverse edges, and each reversed edge costs 1.
Return the minimum number of edge reversals needed over all possible root choices.
Complete the function minEdgeReversalsForRoot in the editor below.
minEdgeReversalsForRoot has the following parameters:
int n: the number of nodesint[][] edges: directed edges whereedges[i] = [u, v]means the current direction isu -> v
Returns
int: the minimum number of reversals required.
1Example 1
If node 3 is chosen as the root, the desired directions are 3 -> 2 -> 1 -> 0 and 3 -> 4. Only the edge 0 -> 1 must be reversed.
2Example 2
Choosing node 2 as the root already makes every edge point away from the root, so no reversals are needed.
Constraints
Limits and guarantees your solution can rely on.
The source thread did not provide explicit numeric bounds.
- The underlying undirected graph formed by
edgesis a tree. edges.length = n - 1.- Each input edge gives the current direction of exactly one tree edge.