Bird
Raised Fist0
DSA Cprogramming~5 mins

Connected Components Using BFS in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a connected component in an undirected graph?
A connected component is a group of nodes where each node is reachable from any other node in the same group by following edges.
Click to reveal answer
beginner
How does BFS help in finding connected components?
BFS explores all nodes reachable from a starting node. By running BFS from unvisited nodes, we find all nodes in that connected component.
Click to reveal answer
beginner
What data structure is commonly used to implement BFS?
A queue is used to keep track of nodes to visit next in BFS.
Click to reveal answer
beginner
In BFS for connected components, why do we mark nodes as visited?
Marking nodes as visited prevents revisiting the same node, avoiding infinite loops and repeated work.
Click to reveal answer
intermediate
What is the time complexity of finding connected components using BFS in a graph with V vertices and E edges?
The time complexity is O(V + E) because each vertex and edge is visited at most once during BFS.
Click to reveal answer
What is the first step when using BFS to find connected components?
AMark all nodes as visited
BStart BFS from an unvisited node
CAdd all nodes to the queue
DRemove edges from the graph
Which data structure is essential for BFS traversal?
AHeap
BStack
CQueue
DSet
How do you know when you have found all connected components in a graph?
AWhen BFS runs once
BWhen the queue is empty
CWhen all edges are removed
DWhen all nodes are visited
What happens if you do not mark nodes as visited in BFS?
AYou may visit nodes multiple times causing infinite loops
BBFS will run faster
CThe graph will change
DEdges will be ignored
What is the main goal of BFS in connected components?
ATo explore all nodes in one connected component
BTo sort nodes by value
CTo find the shortest path between two nodes
DTo remove cycles
Explain step-by-step how BFS is used to find all connected components in an undirected graph.
Think about visiting nodes and marking them to avoid repeats.
You got /5 concepts.
    Describe why marking nodes as visited is important in BFS when finding connected components.
    Consider what happens if you visit the same node multiple times.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the BFS algorithm help find in an undirected graph when used to find connected components?
      easy
      A. All nodes reachable from a starting node forming one connected component
      B. The shortest path between two nodes only
      C. The number of edges in the graph
      D. The degree of each node

      Solution

      1. Step 1: Understand BFS traversal in undirected graphs

        BFS explores all nodes reachable from a given start node by visiting neighbors level by level.
      2. Step 2: Connect BFS to connected components

        By running BFS from an unvisited node, we find all nodes in that node's connected component.
      3. Final Answer:

        All nodes reachable from a starting node forming one connected component -> Option A
      4. Quick Check:

        BFS finds connected components by exploring reachable nodes [OK]
      Hint: BFS visits all nodes in one connected component [OK]
      Common Mistakes:
      • Thinking BFS only finds shortest paths
      • Confusing connected components with edge counts
      • Assuming BFS finds node degrees
      2. Which of the following is the correct way to mark a node as visited in BFS when using an array named visited and current node u?
      easy
      A. visited[u] = 0;
      B. visited[u] = true;
      C. visited[u] == true;
      D. visited[u] = null;

      Solution

      1. Step 1: Understand marking visited nodes

        To mark a node visited, assign true to visited[u], indicating it is visited.
      2. Step 2: Check syntax correctness

        Using visited[u] = true; correctly assigns the boolean true. Using == is a comparison, not assignment.
      3. Final Answer:

        visited[u] = true; -> Option B
      4. Quick Check:

        Assign true to mark visited[u] [OK]
      Hint: Use assignment (=), not comparison (==), to mark visited [OK]
      Common Mistakes:
      • Using == instead of = for assignment
      • Assigning 0 instead of true to visited
      • Assigning null which is invalid in C
      3. Given the following graph adjacency list and BFS code snippet, what is the output number of connected components?
      int n = 5;
      int adj[5][5] = {
        {0,1,0,0,0},
        {1,0,0,0,0},
        {0,0,0,1,1},
        {0,0,1,0,0},
        {0,0,1,0,0}
      };
      bool visited[5] = {false};
      
      int count = 0;
      for (int i = 0; i < n; i++) {
        if (!visited[i]) {
          bfs(i, adj, visited, n);
          count++;
        }
      }
      printf("%d\n", count);
      
      medium
      A. 2
      B. 1
      C. 3
      D. 4

      Solution

      1. Step 1: Analyze adjacency matrix for connected components

        Nodes 0 and 1 are connected; nodes 2, 3, 4 form another connected group.
      2. Step 2: Count connected components using BFS

        BFS from node 0 visits nodes 0 and 1; BFS from node 2 visits nodes 2, 3, 4. Total components = 2.
      3. Final Answer:

        2 -> Option A
      4. Quick Check:

        Two groups found by BFS = 2 [OK]
      Hint: Count BFS runs on unvisited nodes for components [OK]
      Common Mistakes:
      • Counting edges instead of components
      • Misreading adjacency matrix connections
      • Forgetting to mark visited nodes
      4. Identify the bug in this BFS function for counting connected components:
      void bfs(int start, int adj[][5], bool visited[], int n) {
        queue<int> q;
        q.push(start);
        visited[start] = true;
        while (!q.empty()) {
          int u = q.front();
          q.pop();
          for (int v = 0; v < n; v++) {
            if (adj[u][v] == 1 && visited[v] == false) {
              q.push(v);
            }
          }
        }
      }
      medium
      A. Loop condition should be while(q.size() > 1)
      B. Queue is not initialized properly
      C. Start node is not marked visited
      D. Missing visited[v] = true; inside the loop

      Solution

      1. Step 1: Check BFS neighbor processing

        When a neighbor v is found unvisited, it must be marked visited immediately to avoid re-adding.
      2. Step 2: Identify missing visited mark

        The code pushes v to queue but does not mark visited[v] = true; causing repeated visits.
      3. Final Answer:

        Missing visited[v] = true; inside the loop -> Option D
      4. Quick Check:

        Mark visited when enqueueing neighbors [OK]
      Hint: Mark visited when pushing to queue, not after popping [OK]
      Common Mistakes:
      • Marking visited only after popping from queue
      • Incorrect queue initialization
      • Wrong loop condition for BFS
      5. You have a graph with 7 nodes and edges: (0-1), (1-2), (3-4), (5-6). Using BFS to find connected components, what is the minimum number of BFS calls needed to find all components?
      hard
      A. 1
      B. 2
      C. 3
      D. 4

      Solution

      1. Step 1: Identify connected components from edges

        Edges connect nodes into groups: {0,1,2}, {3,4}, {5,6}. Since nodes are numbered 0 to 6, there are no other nodes.
      2. Step 2: Count connected components

        Groups are: {0,1,2}, {3,4}, {5,6} -> 3 components total.
      3. Step 3: BFS calls equal connected components

        Each BFS call finds one component, so minimum BFS calls = 3.
      4. Final Answer:

        3 -> Option C
      5. Quick Check:

        Number of BFS calls = number of connected components [OK]
      Hint: Count connected groups; BFS calls = groups [OK]
      Common Mistakes:
      • Counting edges instead of components
      • Miscounting isolated nodes
      • Assuming BFS calls equal nodes
      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