An articulation point is a vertex in a graph which, when 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 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 visited vertex reachable from the subtree rooted at that node. 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 because removing it disconnects those children.
Click to reveal answer
intermediate
What is the time complexity of finding articulation points using DFS?
The time complexity is O(V + E), where V is the number of vertices and E is the number of edges, because each vertex and edge is visited once during DFS.
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
BDepth First Search
CDijkstra's Algorithm
DKruskal's Algorithm
✗ Incorrect
Depth First Search (DFS) is used to assign discovery and low times to find articulation points.
What does the 'low time' of a node represent?
AThe total edges connected to the node
BThe time node was last visited
CThe number of children in DFS tree
DThe earliest discovery time reachable from the node's subtree
✗ Incorrect
Low time is the earliest discovery time reachable from the subtree rooted at that node.
When is a non-root node considered an articulation point?
AIf it has a child with low time >= its discovery time
BIf it is connected to all other nodes
CIf it has more than two children
DIf it has no children
✗ Incorrect
A non-root node is an articulation point if it has a child whose low time is greater or equal to the node's discovery time.
What is the initial value of discovery and low time before DFS starts?
AInfinity
B0
C-1 or uninitialized
DNumber of vertices
✗ Incorrect
Discovery and low times are initially set to -1 or uninitialized to indicate unvisited nodes.
Explain how DFS helps in finding articulation points in a graph.
Think about how visiting nodes and tracking earliest reachable ancestors helps identify critical nodes.
You got /5 concepts.
Describe the difference between articulation points and bridges in a graph.
One removes a vertex, the other removes an edge; both affect connectivity differently.
You got /4 concepts.
Practice
(1/5)
1. What is an articulation point in a graph?
easy
A. A vertex with the highest degree in the graph
B. A vertex which, when removed, increases the number of connected components
C. A vertex connected to all other vertices
D. A vertex that forms a cycle with its neighbors
Solution
Step 1: Understand the role of articulation points
An articulation point is a vertex that, if removed, breaks the graph into more pieces (connected components).
Step 2: Compare options with definition
Only A vertex which, when removed, increases the number of connected components describes this property correctly; others describe different vertex properties.
Final Answer:
A vertex which, when removed, increases the number of connected components -> Option B
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 forms cycles
Assuming articulation point connects to all vertices
2. Which of the following is the correct way to declare a vector of vectors for adjacency list in C++?
easy
A. vector adj;
B. vector adj<int>;
C. vector<int> adj[];
D. vector<vector> adj<int>;
Solution
Step 1: Recall correct syntax for 2D vector declaration
In C++, a vector of vectors is declared as vector name; to represent adjacency lists.
Step 2: Check each option
vector adj; matches correct syntax; A, B and D have syntax errors.
Final Answer:
vector adj; -> Option A
Quick Check:
2D vector syntax = vector [OK]
Hint: Use vector for adjacency lists in C++ [OK]
Common Mistakes:
Using array syntax instead of vector
Incorrect template syntax
Missing angle brackets for nested vectors
3. Consider the following code snippet for finding articulation points in a graph with 4 vertices (0 to 3):
int timer = 0;
vector<int> disc(4, -1), low(4, -1);
vector<bool> visited(4, false), isAP(4, false);
vector adj = {{1, 2}, {0, 2}, {0, 1, 3}, {2}};
void dfs(int u, int parent) {
visited[u] = true;
disc[u] = low[u] = timer++;
int children = 0;
for (int v : adj[u]) {
if (v == parent) continue;
if (!visited[v]) {
children++;
dfs(v, u);
low[u] = min(low[u], low[v]);
if (parent != -1 && low[v] >= disc[u])
isAP[u] = true;
} else {
low[u] = min(low[u], disc[v]);
}
}
if (parent == -1 && children > 1)
isAP[u] = true;
}
dfs(0, -1);
vector<int> result;
for (int i = 0; i < 4; i++) {
if (isAP[i]) result.push_back(i);
}
for (int x : result) cout << x << " ";
What will be the output?
medium
A. 2
B. 0 1 2
C. 1 2
D. 0 2
Solution
Step 1: Analyze the graph structure and DFS traversal
The graph edges are: 0-1, 0-2, 1-2, 2-3 (triangle 0-1-2 + pendant 3 on 2). DFS from 0 visits 1 then 2 then 3; when back to 0, 2 already visited so root children=1 (not AP).
Step 2: Check articulation point conditions in code
Root children=1 (<=1, not AP). For non-root u=2 (parent=1), low[3]=3 >= disc[2]=2 so isAP[2]=true. No others. Output is 2.
Final Answer:
2 -> Option A
Quick Check:
Root children=1 and vertex 2 disconnects 3 = 2 [OK]
Hint: Root with >1 child and low[v]>=disc[u] mark AP [OK]
Common Mistakes:
Missing root articulation point condition
Confusing low and disc arrays
Ignoring parent check in DFS
4. The following code snippet is intended to find articulation points but has a bug:
void dfs(int u, int parent) {
visited[u] = true;
disc[u] = low[u] = timer++;
int children = 0;
for (int v : adj[u]) {
if (!visited[v]) {
children++;
dfs(v, u);
low[u] = min(low[u], low[v]);
if (low[v] >= disc[u])
isAP[u] = true;
} else if (v != parent) {
low[u] = min(low[u], disc[v]);
}
}
if (parent == -1 && children > 1)
isAP[u] = true;
}
What is the bug in this code?
medium
A. Not marking visited[u] as true at start
B. Incorrect update of low[u] inside else if block
C. Not incrementing timer before assigning disc[u]
D. Missing check for parent != -1 before marking isAP[u]
Solution
Step 1: Understand articulation point condition for non-root nodes
For non-root nodes, isAP[u] should be set only if parent != -1 and low[v] >= disc[u]. The code misses the parent != -1 check before setting isAP[u].
Step 2: Verify other parts of code
Timer is incremented correctly, visited[u] is set true, low[u] updated properly. So only missing parent check is the bug.
Final Answer:
Missing check for parent != -1 before marking isAP[u] -> Option D
Quick Check:
Parent check needed before marking articulation point [OK]
Hint: Add parent != -1 check before marking articulation point [OK]
Common Mistakes:
Marking root as articulation point incorrectly
Confusing order of visited and timer increment
Ignoring parent in back edge condition
5. Given a connected 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: Analyze graph connectivity and removal effects
Vertices 0,1,2 form a triangle (cycle), so none of them alone disconnects graph except vertex 1 which connects to 3 and 4. Removing 1 disconnects 3 and 4. Removing 3 disconnects 4. So 1 and 3 are articulation points.
Step 2: Confirm articulation points
Vertex 1 connects two parts: cycle and chain (3-4). Vertex 3 connects 4 only. Removing 1 or 3 increases components. Vertex 0, 2, 4 are not articulation points.
Final Answer:
1 3 -> Option C
Quick Check:
Removing 1 or 3 disconnects graph = 1 3 [OK]
Hint: Check if removing vertex splits graph into parts [OK]
Common Mistakes:
Including vertices in 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.