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.
n
edges
, length
n-1
, each as
(u, v)
r
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.
1 <= n <= 2e5
edges
is a tree
0..n-1
Note: With large n, recursive DFS may overflow the call stack in some languages; an iterative traversal may be required.