An articulation point is a vertex in a graph which, when removed along with its edges, increases the number of connected components. It is a critical node that disconnects parts of the graph.
Click to reveal answer
intermediate
Which algorithm is commonly used to find articulation points in a graph?
Tarjan's algorithm is commonly used to find articulation points. It uses Depth First Search (DFS) and tracks discovery times and low values of vertices.
Click to reveal answer
intermediate
In Tarjan's algorithm, what does the 'low' value of a vertex represent?
The 'low' value of a vertex is the earliest discovery time reachable from that vertex or its descendants by following DFS tree edges and back edges.
Click to reveal answer
intermediate
Why is the root of the DFS tree treated differently when finding articulation points?
The root is an articulation point only if it has two or more children in the DFS tree. Removing it disconnects the graph if it has multiple subtrees.
Click to reveal answer
beginner
What is the time complexity of finding articulation points using Tarjan's algorithm?
The time complexity is O(V + E), where V is the number of vertices and E is the number of edges, because it uses a single DFS traversal.
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 data structure is primarily used in Tarjan's algorithm to find articulation points?
AQueue
BStack
CBreadth First Search (BFS)
DDepth First Search (DFS) recursion
✗ Incorrect
Tarjan's algorithm uses DFS recursion to explore the graph and compute discovery and low values.
In Tarjan's algorithm, if a vertex u has a child v such that low[v] >= disc[u], what does it indicate?
Av is an articulation point
Bu is an articulation point
Cu and v are not connected
DNo articulation point
✗ Incorrect
If low[v] >= disc[u], it means v or its descendants cannot reach an ancestor of u, so u is an articulation point.
How many children must the root of DFS tree have to be an articulation point?
AAt least 2
BAt least 3
CAt least 1
DNone
✗ Incorrect
The root is an articulation point only if it has two or more children in the DFS tree.
What is the initial value assigned to discovery time of each vertex before DFS starts?
AInfinity
B0
C-1
DNone
✗ Incorrect
Discovery times are initialized to -1 to indicate unvisited vertices before DFS traversal.
Explain how Tarjan's algorithm finds articulation points in a graph using DFS.
Think about how discovery and low values help identify critical vertices.
You got /5 concepts.
Describe why removing an articulation point increases the number of connected components in a graph.
Consider the role of articulation points as bridges in the graph.
You got /4 concepts.
Practice
(1/5)
1. What is an articulation point in a graph?
easy
A. A vertex that has no edges connected to it
B. A vertex with the highest degree in the graph
C. A vertex that, when removed, increases the number of connected components
D. A vertex connected to all other vertices
Solution
Step 1: Understand articulation point definition
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 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 C
Quick Check:
Articulation point = vertex increasing components when removed [OK]
Hint: Articulation point splits graph if 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 declare a graph adjacency list in C++ for articulation point detection?
easy
A. int graph[100][100];
B. vector<int> graph[100];
C. int* graph = malloc(sizeof(int) * 100);
D. int graph[100];
Solution
Step 1: Understand adjacency list representation
An adjacency list stores neighbors for each vertex, best done with an array of vectors in C++ or array of lists in C.
Step 2: Analyze options
vector<int> graph[100];: vector<int> graph[100]; is correct for adjacency list in C++ (common in DSA). int graph[100][100]; is 2D array (adjacency matrix). int* graph = malloc(sizeof(int) * 100); is incorrect memory allocation. int graph[100]; is single array, insufficient for lists.
Final Answer:
vector<int> graph[100]; -> Option B
Quick Check:
Adjacency list = array of vectors [OK]
Hint: Use array of vectors for adjacency list in C++ [OK]
Common Mistakes:
Using 2D arrays for adjacency list instead of adjacency matrix
Incorrect memory allocation for adjacency list
Confusing adjacency list with adjacency matrix
3. Consider the following code snippet for articulation point detection in a graph with 4 vertices (0 to 3):
void dfs(int u, int parent) {
visited[u] = true;
disc[u] = low[u] = ++time;
int children = 0;
for (int v : graph[u]) {
if (!visited[v]) {
children++;
dfs(v, u);
low[u] = min(low[u], low[v]);
if (parent == -1 && children > 1)
articulation[u] = true;
if (parent != -1 && low[v] >= disc[u])
articulation[u] = true;
} else if (v != parent) {
low[u] = min(low[u], disc[v]);
}
}
}
What will be the value of articulation[1] after running dfs(0, -1) on the graph edges: 0-1, 1-2, 1-3?
medium
A. true
B. false
C. undefined
D. depends on order
Solution
Step 1: Analyze graph structure and DFS
Graph edges: 0-1, 1-2, 1-3. Vertex 1 connects 0 to 2 and 3. Removing 1 disconnects graph.
Step 2: Apply articulation point logic
Since 1 is not root (parent != -1) and low[v] >= disc[u] condition holds for children 2 and 3, articulation[1] is set true.