Bird
Raised Fist0
DSA Cprogramming~5 mins

Articulation Points in Graph in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an articulation point in a graph?
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
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
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
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
What is the initial value assigned to discovery time of each vertex before DFS starts?
AInfinity
B0
C-1
DNone
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

      1. Step 1: Understand articulation point definition

        An articulation point is a vertex that, if removed, breaks the graph into more pieces (connected components).
      2. Step 2: Compare options with definition

        Only 'A vertex that, when removed, increases the number of connected components' matches this definition exactly.
      3. Final Answer:

        A vertex that, when removed, increases the number of connected components -> Option C
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        vector<int> graph[100]; -> Option B
      4. 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

      1. 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.
      2. 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.
      3. Final Answer:

        true -> Option A
      4. Quick Check:

        Vertex 1 disconnects graph = articulation true [OK]
      Hint: Check if removing vertex splits graph [OK]
      Common Mistakes:
      • Assuming root node logic applies to vertex 1
      • Ignoring low and disc comparison
      • Confusing parent and child roles in DFS
      4. The following code snippet is intended to find articulation points but has a bug. What is the bug?
      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]);
          }
        }
      }
      medium
      A. The visited array is not updated
      B. The variable children is not incremented
      C. The parent parameter is not passed correctly
      D. The condition low[v] > disc[u] should be low[v] >= disc[u]

      Solution

      1. Step 1: Review articulation point condition

        The condition for articulation point when parent != -1 is low[v] >= disc[u], not strictly greater.
      2. Step 2: Identify impact of wrong condition

        Using low[v] > disc[u] misses cases where low[v] == disc[u], causing missed articulation points.
      3. Final Answer:

        The condition low[v] > disc[u] should be low[v] >= disc[u] -> Option D
      4. Quick Check:

        Use >= to detect articulation points correctly [OK]
      Hint: Use >= not > for articulation condition [OK]
      Common Mistakes:
      • Using > instead of >= in low and disc comparison
      • Forgetting to increment children count
      • Not marking visited vertices
      5. Given a connected undirected graph with vertices 0 to 5 and edges: 0-1, 1-2, 2-0, 1-3, 3-4, 4-5, 5-3, which vertices are articulation points?
      hard
      A. [1,3]
      B. [1,4]
      C. [0,2,4]
      D. [3,5]

      Solution

      1. Step 1: Analyze graph structure

        Triangles: 0-1-2 and 3-4-5. Vertex 1 connects 0-1-2 triangle to 3-4-5 cluster via 1-3. Vertex 3 connects 1 to the 3-4-5 triangle.
      2. Step 2: Identify articulation points

        Removing 1 disconnects {0,2} from {3,4,5}. Removing 3 disconnects {0,1,2} from {4,5} (4-5 still connected). So articulation points are 1 and 3.
      3. Final Answer:

        [1,3] -> Option A
      4. Quick Check:

        Vertices splitting graph = 1 and 3 [OK]
      Hint: Check vertices connecting separate cycles [OK]
      Common Mistakes:
      • Including vertices inside cycles as articulation points
      • Missing articulation points connecting clusters
      • Confusing articulation points with bridges
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard