Bird
Raised Fist0
DSA Cprogramming~5 mins

Bridges in Graph Tarjan's Algorithm in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a bridge in a graph?
A bridge is an edge in a graph that, if removed, increases the number of connected components. It means the edge is critical for keeping the graph connected.
Click to reveal answer
intermediate
What is the main idea behind Tarjan's algorithm for finding bridges?
Tarjan's algorithm uses a depth-first search (DFS) to assign discovery times and low values to each vertex. An edge is a bridge if the low value of the connected vertex is greater than the discovery time of the current vertex.
Click to reveal answer
intermediate
In Tarjan's algorithm, what does the 'low' value represent?
The 'low' value of a vertex is the earliest discovery time reachable from that vertex by following the DFS tree edges and at most one back edge.
Click to reveal answer
intermediate
Why do we compare low[v] > disc[u] to find a bridge in Tarjan's algorithm?
If low[v] > disc[u], it means vertex v cannot reach any ancestor of u without using the edge (u, v). So, removing (u, v) disconnects the graph, making it a bridge.
Click to reveal answer
beginner
What data structures are commonly used in Tarjan's algorithm for bridges?
Arrays or lists to store discovery times (disc), low values (low), a visited set or array, and adjacency lists to represent the graph.
Click to reveal answer
What happens if you remove a bridge edge from a graph?
AThe graph becomes a tree
BThe graph remains connected
CThe graph becomes disconnected
DThe graph becomes cyclic
In Tarjan's algorithm, what does the discovery time represent?
AThe order in which vertices are visited in DFS
BThe number of edges connected to a vertex
CThe shortest distance from the start vertex
DThe number of connected components
Which condition identifies an edge (u, v) as a bridge in Tarjan's algorithm?
Alow[v] > disc[u]
Blow[u] > disc[v]
Cdisc[u] > disc[v]
Dlow[u] == low[v]
What is the role of the 'low' array in Tarjan's algorithm?
AMarks visited vertices
BTracks the earliest visited vertex reachable
CStores the parent of each vertex
DCounts the number of edges
Which graph traversal method does Tarjan's algorithm use?
ADijkstra's Algorithm
BBreadth-First Search (BFS)
CPrim's Algorithm
DDepth-First Search (DFS)
Explain how Tarjan's algorithm finds bridges in a graph using discovery and low values.
Think about how DFS helps track back edges and earliest reachable ancestors.
You got /5 concepts.
    Describe what a bridge is in a graph and why it is important to find them.
    Consider bridges as critical connections that keep parts of the graph linked.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of Tarjan's algorithm when finding bridges in a graph?
      easy
      A. To detect cycles in a graph
      B. To find edges that, if removed, increase the number of connected components
      C. To find the shortest path between two nodes
      D. To count the total number of edges in the graph

      Solution

      1. Step 1: Understand the definition of a bridge

        A bridge is an edge that, when removed, increases the number of connected components in a graph.
      2. Step 2: Relate Tarjan's algorithm to bridges

        Tarjan's algorithm efficiently finds such edges by using DFS and low-link values.
      3. Final Answer:

        To find edges that, if removed, increase the number of connected components -> Option B
      4. Quick Check:

        Bridges = edges increasing components when removed [OK]
      Hint: Bridges disconnect graph parts when removed [OK]
      Common Mistakes:
      • Confusing bridges with shortest paths
      • Thinking bridges detect cycles
      • Assuming bridges count edges
      2. Which of the following is the correct way to declare the array that stores discovery times in C for Tarjan's algorithm?
      easy
      A. int disc = new int[MAX];
      B. int disc[];
      C. int disc[MAX];
      D. int[] disc = new int[MAX];

      Solution

      1. Step 1: Recall C array declaration syntax

        In C, arrays are declared with type and size like int arr[size];
      2. Step 2: Match with discovery time array

        So, int disc[MAX]; is correct for fixed size MAX.
      3. Final Answer:

        int disc[MAX]; -> Option C
      4. Quick Check:

        C arrays use type name[size] [OK]
      Hint: Use type name[size] for arrays in C [OK]
      Common Mistakes:
      • Using Java or C++ style array declarations in C
      • Not specifying array size
      • Using dynamic allocation syntax incorrectly
      3. Consider the following code snippet for Tarjan's algorithm to find bridges. What will be printed?
      void dfs(int u, int parent) {
        disc[u] = low[u] = ++time;
        for (int v : adj[u]) {
          if (disc[v] == -1) {
            dfs(v, u);
            low[u] = min(low[u], low[v]);
            if (low[v] > disc[u])
              printf("Bridge: %d - %d\n", u, v);
          } else if (v != parent) {
            low[u] = min(low[u], disc[v]);
          }
        }
      }
      
      // Graph edges:
      // 0-1, 1-2, 2-0, 1-3
      // Start dfs(0, -1);
      medium
      A. Bridge: 1 - 3
      B. Bridge: 0 - 1
      C. Bridge: 2 - 0
      D. No bridges

      Solution

      1. Step 1: Analyze the graph structure

        The graph has a triangle 0-1-2 and an edge 1-3. Triangle edges are not bridges because removing them doesn't disconnect the graph.
      2. Step 2: Apply Tarjan's condition for bridges

        Edge 1-3 is a bridge because removing it disconnects node 3.
      3. Final Answer:

        Bridge: 1 - 3 -> Option A
      4. Quick Check:

        Only edge 1-3 disconnects graph [OK]
      Hint: Bridges disconnect nodes; triangle edges are safe [OK]
      Common Mistakes:
      • Thinking all edges in a cycle are bridges
      • Ignoring parent check in DFS
      • Misinterpreting low and disc values
      4. The following code snippet is intended to find bridges using Tarjan's algorithm. What is the bug?
      void dfs(int u, int parent) {
        disc[u] = low[u] = ++time;
        for (int v : adj[u]) {
          if (disc[v] == -1) {
            dfs(v, u);
            low[u] = min(low[u], low[v]);
            if (low[v] >= disc[u])
              printf("Bridge: %d - %d\n", u, v);
          } else if (v != parent) {
            low[u] = min(low[u], disc[v]);
          }
        }
      }
      medium
      A. The condition should be low[v] > disc[u], not >=.
      B. The disc array is not initialized.
      C. The parent parameter is not used correctly.
      D. The time variable is not incremented.

      Solution

      1. Step 1: Understand bridge condition in Tarjan's algorithm

        Bridge condition is low[v] > disc[u], meaning no back edge from v or its descendants to u or above.
      2. Step 2: Identify the bug in condition

        Using >= incorrectly marks edges that are not bridges (like parent edges in cycles).
      3. Final Answer:

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

        Bridge if low[v] > disc[u] [OK]
      Hint: Use strict greater than for bridge check [OK]
      Common Mistakes:
      • Using >= instead of > in bridge condition
      • Not initializing discovery times
      • Ignoring parent node in DFS
      5. Given a connected undirected graph with 5 nodes and edges: 0-1, 1-2, 2-3, 3-4, 1-4, which edges are bridges according to Tarjan's algorithm?
      hard
      A. [0-1, 2-3]
      B. [2-3, 3-4]
      C. [1-4]
      D. [0-1]

      Solution

      1. Step 1: Visualize the graph

        Edges: 0-1, 1-2, 2-3, 3-4, 1-4. The edge 1-4 creates a cycle with 1-2-3-4.
      2. Step 2: Identify bridges

        Removing 0-1 disconnects node 0, so 0-1 is a bridge. Edges 2-3 and 3-4 are in cycle with 1-4, so not bridges.
      3. Final Answer:

        [0-1] -> Option D
      4. Quick Check:

        Only 0-1 disconnects graph [OK]
      Hint: Edges in cycles are not bridges [OK]
      Common Mistakes:
      • Marking cycle edges as bridges
      • Ignoring connectivity after edge removal
      • Confusing bridge with articulation point
      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