Find minimum reversals to orient edges away from root
UberSoftware Engineer · Online AssessmentLast updated
This question evaluates understanding of directed graphs and rooted trees, the ability to reason about edge orientations and minimal reversals, and competency in traversal techniques and complexity analysis.
You are given a connected graph with n nodes labeled 0..n-1 and n-1 directed edges. If you ignore edge directions, the edges form a tree.
Each directed edge is given as a pair (u, v) meaning the edge currently points from u to v.
You are also given a root node r.
In the rooted tree (rooted at r), every edge should point away from the root (i.e., from parent to child). You may reverse the direction of any edge; each reversal costs 1.
Return the minimum total number of edge reversals required so that, after reversals, all edges in the tree point away from r.
Input
- Integer
n - List of directed edges
edges, lengthn-1, each as(u, v) - Integer root
r
Output
- Integer: minimum number of reversals
Example
Suppose n = 5, r = 0, and edges are:
(1, 0),(0, 2),(3, 2),(3, 4)
Ignoring directions, the tree is 0-1, 0-2, 2-3, 3-4.
To make all edges point away from 0, edges (1,0) and (3,2) must be reversed, so the answer is 2.
Constraints (typical)
1 <= n <= 2e5- The undirected version of
edgesis a tree - Nodes are
0..n-1
Note: With large n, recursive DFS may overflow the call stack in some languages; an iterative traversal may be required.
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.