Find Critical Nodes
Reported by candidates from Cisco's online assessment. Pattern, common pitfall, and the honest play if you blank under the timer.
Cisco asked this in June 2024, and it's a graph problem with a sharp pivot at the end. You're looking for critical nodes, also called articulation points or cut vertices. These are nodes whose removal disconnects the graph or increases the number of connected components. Most candidates start with a naive adjacency list walk and blow the time limit. StealthCoder is your hedge if you blank on the DFS traversal order during the live OA.
Pattern and pitfall
The trick is recognizing that critical nodes aren't just high-degree vertices. You need Tarjan's algorithm or a modified DFS that tracks discovery time and low-link values. A node is critical if it's either the root of the DFS tree with 2+ children, or a non-root node where a child's subtree can't reach an ancestor without going through it. The common pitfall is implementing a basic connectivity check for each removed node, which is O(n squared) and fails on anything larger than 50 nodes. The real pattern is depth-first-search with backtracking and time-based tracking.
Memorize the pattern. If you can't, run StealthCoder. The proctor sees the IDE. They don't see what's behind it.
You can drill Find Critical Nodes cold, or you can hedge it. StealthCoder runs invisibly during screen share and surfaces a working solution in under 2 seconds. The proctor sees the IDE. They don't see what's behind it. Made by an engineer who treats the OA as theater. If yours is tonight, you don't have time to grind. You have time to hedge.
Get StealthCoderRelated leaked OAs
You've seen the question.
Make sure you actually pass Cisco's OA.
Cisco reuses patterns across OAs. Made by an engineer who treats the OA as theater. If yours is tonight, you don't have time to grind. You have time to hedge. Works on HackerRank, CodeSignal, CoderPad, and Karat.
Find Critical Nodes FAQ
Is this the same as finding bridges in a graph?+
No. Bridges are edges whose removal disconnects the graph. Critical nodes are vertices. The algorithm is similar (DFS with discovery/low-link times), but the condition for a critical node is different. You're tracking subtree reachability, not edge pairs.
What if the graph is disconnected to start?+
You still run DFS from every unvisited node. A critical node in one component doesn't affect connectivity elsewhere. Track results across all components. The root of each DFS tree is only critical if it has 2+ children in that tree.
How do I test this in 48 hours before the OA?+
LeetCode 1192 (Critical Connections in a Network) is the closest match, but that's for bridges. For articulation points, use LeetCode 1198 or hand-trace Tarjan on a 5-node graph with a cycle. Write the DFS once and verify on paper.
Do I need to handle self-loops or multi-edges?+
The problem text isn't given, so assume a standard undirected graph. If the input allows self-loops, they don't make a node critical. If multi-edges exist, treat them as a single edge for connectivity purposes.
What's the time complexity I need to hit?+
O(V + E) with DFS. Anything slower than that will time out on large inputs. Space is O(V) for the recursion stack and tracking arrays. You need to visit each node and edge exactly once.