1489. Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree (LeetCode 1489) is a Hard Data Structures and Algorithms interview problem you can solve, run and submit on Thita.ai. It belongs to the Graph Traversal Patterns (DFS & BFS) pattern, in the Bridges & Articulation Points (Tarjan low-link) subpattern.

How to solve Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree is a Bridges and Articulation Points problem, part of Graph Traversal Patterns (DFS & BFS). Find bridges and articulation points in graphs using Tarjan's low-link algorithm.

Work towards the solution in these steps:

  1. Start by recalling how to find a Minimum Spanning Tree (MST) using classic algorithms like Kruskal or Prim, and consider how to efficiently represent the graph and edges.
  2. To determine critical edges, think about the impact of removing an edge from the graph on the MST's total weight, and how to verify if an edge is indispensable.
  3. For pseudo-critical edges, consider forcing the inclusion of an edge in the MST construction and check if this still results in a valid MST with the same total weight.

The reference solution runs in O(nlogn) time and O(n) space.

The Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree solution and editorial walks through the full approach with reference code.

Problem statement

Given a weighted undirected connected graph with n vertices numbered from 0 to n - 1, and an array edges where edges[i] = [ai, bi, weighti] represents a bidirectional and weighted edge between nodes ai and bi. A minimum spanning tree (MST) is a subset of the graph's edges that connects all vertices without cycles and with the minimum possible total edge weight.

Find all the critical and pseudo-critical edges in the given graph's minimum spanning tree (MST). An MST edge whose deletion from the graph would cause the MST weight to increase is called a critical edge. On the other hand, a pseudo-critical edge is that which can appear in some MSTs but not all.

Note that you can return the indices of the edges in any order.

Example 1:

Input: n = 5, edges = [[0,1,1],[1,2,1],[2,3,2],[0,3,2],[0,4,3],[3,4,3],[1,4,6]] Output: [[0,1],[2,3,4,5]] Explanation: The figure above describes the graph.

The following figure shows all the possible MSTs: Notice that the two edges 0 and 1 appear in all MSTs, therefore they are critical edges, so we return them in the first list of the output.

The edges 2, 3, 4, and 5 are only part of some MSTs, therefore they are considered pseudo-critical edges. We add them to the second list of the output.

Example 2:

Input: n = 4, edges = [[0,1,1],[1,2,1],[2,3,1],[0,3,1]] Output: [[],[0,1,2,3]] Explanation: We can observe that since all 4 edges have equal weight, choosing any 3 edges from the given 4 will yield an MST. Therefore all 4 edges are pseudo-critical.

Constraints:

- 2 <= n <= 100 - 1 <= edges.length <= min(200, n (n - 1) / 2) - edges[i].length == 3 - 0 <= ai < bi < n - 1 <= weighti <= 1000 - All pairs (ai, bi) are distinct.

Topics and companies

Topics: Depth-first Search, Union Find.

Reported in interviews at Amazon.

How to practise Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree on Thita.ai

Starter code is provided in C, C#, C++, dart, elixir, erlang, Go, Java, JavaScript, Kotlin, PHP, Python, python3, racket, Ruby, Rust, Scala, Swift and TypeScript. Your solution runs against 5 test cases for this problem, with the AI coach available for a hint when you are stuck rather than a finished answer. The reference solution runs in O(nlogn) time and O(n) space.

Open Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree in the code editor, or read the Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree editorial for a worked solution with its approach and complexity analysis.

Where Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree sits in the DSA pattern sheet

Problems related to Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree

Other problems that use the same Bridges & Articulation Points (Tarjan low-link) and Graph Traversal Patterns (DFS & BFS) techniques:

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree FAQ

What is the LeetCode number of Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree?

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree is LeetCode problem 1489, rated Hard.

What pattern is used to solve Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree?

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree is a Bridges and Articulation Points problem. It belongs to the Graph Traversal Patterns (DFS & BFS) pattern, in the Bridges & Articulation Points (Tarjan low-link) subpattern.

What is the time complexity of Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree?

The reference solution runs in O(nlogn) time and O(n) space.

Which companies ask Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree?

Find Critical and Pseudo-Critical Edges in Minimum Spanning Tree has been reported in interviews at Amazon.

Preparing this workspace.