An articulation point is a vertex in a graph that, if removed along with its edges, increases the number of connected components. It is also called a cut vertex.
Click to reveal answer
beginner
Why are articulation points important in network design?
Articulation points represent critical nodes whose failure can disconnect parts of the network. Identifying them helps improve network reliability and fault tolerance.
Click to reveal answer
intermediate
What is the role of 'discovery time' and 'low time' in finding articulation points?
Discovery time marks when a node is first visited in DFS. Low time is the earliest discovery time reachable from that node or its descendants. Comparing these helps detect articulation points.
Click to reveal answer
intermediate
In DFS, when is a root node considered an articulation point?
A root node is an articulation point if it has two or more children in the DFS tree. Removing it disconnects those children.
Click to reveal answer
advanced
Explain the condition to identify an articulation point for a non-root node in DFS.
A non-root node u is an articulation point if it has a child v such that low[v] >= discovery[u]. This means v or its descendants cannot reach an ancestor of u without going through u.
Click to reveal answer
What happens if you remove an articulation point from a connected graph?
AThe graph becomes disconnected
BThe graph remains connected
CThe graph becomes a tree
DThe graph becomes complete
✗ Incorrect
Removing an articulation point increases the number of connected components, making the graph disconnected.
Which algorithm technique is commonly used to find articulation points?
ABreadth-First Search
BKruskal's Algorithm
CDijkstra's Algorithm
DDepth-First Search
✗ Incorrect
Depth-First Search (DFS) is used to assign discovery and low times to find articulation points.
What does the 'low' value represent in articulation point detection?
AThe earliest discovery time reachable
BThe highest discovery time reachable
CThe number of children in DFS tree
DThe distance from the root
✗ Incorrect
'Low' is the earliest discovery time reachable from a node or its descendants, including back edges.
When is a root node considered an articulation point?
AIf it has exactly one child
BIf it has two or more children
CIf it has no children
DAlways
✗ Incorrect
A root node with two or more children in DFS tree is an articulation point.
If for a node u and its child v, low[v] < discovery[u], what does it imply?
Au is an articulation point
Bv is an articulation point
Cv can reach an ancestor of u without u
DGraph is disconnected
✗ Incorrect
Low[v] < discovery[u] means v or its descendants can reach an ancestor of u without passing through u, so u is not an articulation point for that child.
Describe the process to find articulation points in a graph using DFS.
Think about how discovery and low times help identify critical nodes.
You got /4 concepts.
Explain why removing an articulation point increases the number of connected components in a graph.
Imagine a bridge connecting two islands.
You got /3 concepts.
Practice
(1/5)
1. What is an articulation point in a graph?
easy
A. A vertex that, when removed, increases the number of connected components
B. A vertex with the highest degree in the graph
C. A vertex connected to all other vertices
D. A vertex that has no edges connected to it
Solution
Step 1: Understand the definition of articulation point
An articulation point is a vertex that, if removed, increases the number of disconnected parts in the graph.
Step 2: Compare options with definition
Only A vertex that, when removed, increases the number of connected components matches this definition exactly.
Final Answer:
A vertex that, when removed, increases the number of connected components -> Option A
Quick Check:
Articulation point = vertex increasing components when removed [OK]
Hint: Articulation point breaks graph connectivity when removed [OK]
Common Mistakes:
Confusing articulation point with highest degree vertex
Thinking articulation point is always connected to all vertices
Assuming isolated vertices are articulation points
2. Which of the following is the correct way to initialize a graph adjacency list in JavaScript for articulation point detection?
easy
A. const graph = Array.from({ length: n }, () => []);
B. const graph = new Array(n).fill([]);
C. const graph = Array(n).fill(null);
D. const graph = new Map();
Solution
Step 1: Understand adjacency list initialization
We need an array of separate empty arrays for each vertex to store neighbors.
Step 2: Analyze options
const graph = new Array(n).fill([]); uses fill([]), which fills all positions with the same array reference (wrong). const graph = Array.from({ length: n }, () => []); uses Array.from with a function returning new arrays, so each vertex has its own array (correct). const graph = Array(n).fill(null); fills with null, not arrays. const graph = new Map(); uses Map, which is valid but not the typical adjacency list array.
Final Answer:
const graph = Array.from({ length: n }, () => []); -> Option A
Quick Check:
Separate arrays per vertex = const graph = Array.from({ length: n }, () => []); [OK]
Hint: Use Array.from with function to create separate arrays [OK]
Common Mistakes:
Using fill([]) creates shared references causing bugs
Initializing with null instead of arrays
Confusing Map with adjacency list array
3. Consider the following JavaScript code snippet for finding articulation points in a graph with 4 vertices (0 to 3):
const graph = [[1,2],[0],[0,3],[2]];
const visited = [false, false, false, false];
const disc = [0, 0, 0, 0];
const low = [0, 0, 0, 0];
const parent = [-1, -1, -1, -1];
const ap = [false, false, false, false];
let time = 0;
function dfs(u) {
visited[u] = true;
disc[u] = low[u] = ++time;
let children = 0;
for (const v of graph[u]) {
if (!visited[v]) {
children++;
parent[v] = u;
dfs(v);
low[u] = Math.min(low[u], low[v]);
if (parent[u] === -1 && children > 1) ap[u] = true;
if (parent[u] !== -1 && low[v] >= disc[u]) ap[u] = true;
} else if (v !== parent[u]) {
low[u] = Math.min(low[u], disc[v]);
}
}
}
dfs(0);
console.log(ap);
What will be the output printed?
medium
A. [false, false, false, false]
B. [true, false, true, false]
C. [true, true, false, false]
D. [false, true, true, false]
Solution
Step 1: Trace DFS and articulation point logic
Start DFS at 0: children are 1 and 2. For root (0), if children > 1, ap[0] = true. So 0 is articulation point. For vertex 2, low[3] >= disc[2] triggers ap[2] = true.
Step 2: Determine articulation points array
Vertices 0 and 2 are articulation points, others are not. So ap = [true, false, true, false].
Final Answer:
[true, false, true, false] -> Option B
Quick Check:
Root with >1 child and low[v]>=disc[u] mark articulation points [OK]
Hint: Root with multiple children and low[v]>=disc[u] mark articulation points [OK]
Common Mistakes:
Ignoring root special case with multiple children
Confusing low and disc arrays
Not updating low[u] on back edges
4. The following code attempts to find articulation points but has a bug:
function dfs(u) {
visited[u] = true;
disc[u] = low[u] = ++time;
let children = 0;
for (const v of graph[u]) {
if (!visited[v]) {
children++;
parent[v] = u;
dfs(v);
low[u] = Math.min(low[u], low[v]);
if (low[v] >= disc[u]) ap[u] = true;
} else if (v !== parent[u]) {
low[u] = Math.min(low[u], disc[v]);
}
}
}
What is the bug in this code?
medium
A. It does not mark visited vertices
B. It uses '>' instead of '>=' in the articulation point check
C. It does not update parent array correctly
D. It misses the root vertex articulation point condition
Solution
Step 1: Analyze articulation point conditions
The code checks if low[v] >= disc[u] to mark articulation points but misses the special case for root vertex which requires children > 1.
Step 2: Identify missing root condition
Without checking if u is root and has multiple children, root articulation points won't be detected.
Final Answer:
It misses the root vertex articulation point condition -> Option D
Quick Check:
Root articulation point requires separate children > 1 check [OK]
Hint: Always check root vertex children count separately [OK]
Common Mistakes:
Forgetting root vertex special case
Using wrong comparison operator in articulation check
Not updating parent array before DFS call
5. Given a connected undirected graph with 5 vertices and edges: 0-1, 1-2, 2-0, 1-3, 3-4, which vertices are articulation points?
hard
A. [1]
B. [0, 1, 3]
C. [1, 3]
D. [3, 4]
Solution
Step 1: Visualize the graph and connections
Vertices 0,1,2 form a triangle. Vertex 1 connects to 3, which connects to 4.
Step 2: Identify articulation points
Removing 1 disconnects 3 and 4 from the rest, so 1 is articulation point. Removing 3 disconnects 4, so 3 is articulation point. 0,2,4 are not articulation points.
Final Answer:
[1, 3] -> Option C
Quick Check:
Vertices connecting subgraphs are articulation points [OK]
Hint: Articulation points connect separate graph parts [OK]
Common Mistakes:
Including vertices inside cycles as articulation points
Missing leaf node articulation points
Confusing articulation points with bridges
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.