Bird
Raised Fist0
DSA Goprogramming~5 mins

Connected Components Using BFS in DSA Go - 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 through edges.
Click to reveal answer
beginner
How does BFS help in finding connected components?
BFS explores all nodes reachable from a starting node, marking them as visited. This identifies one connected component at a time.
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
intermediate
In BFS for connected components, what do you do when you find an unvisited node?
Start a BFS from that node to find and mark all nodes in its connected component.
Click to reveal answer
intermediate
Why do we need to check all nodes in the graph when finding connected components?
Because the graph may have multiple disconnected parts, and BFS from one node only finds one connected component.
Click to reveal answer
What is the first step in finding connected components using BFS?
APick an unvisited node and start BFS
BMark all nodes as visited
CRemove edges from the graph
DSort the nodes
Which data structure is essential for BFS?
AStack
BMap
CSet
DQueue
What does BFS mark when visiting nodes?
AEdges
BWeights
CVisited nodes
DDisconnected nodes
How do you know when you found all connected components?
AWhen all nodes are visited
BWhen BFS queue is empty
CWhen all edges are removed
DWhen the graph is sorted
If a graph has 3 connected components, how many BFS runs are needed?
A1
B3
C2
DDepends on edges
Explain step-by-step how BFS is used to find connected components in an undirected graph.
Think about visiting nodes and marking them to find groups.
You got /5 concepts.
    Describe why BFS alone from one node does not find all connected components in a graph.
    Consider what happens if the graph has separate parts.
    You got /4 concepts.

      Practice

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

      Solution

      1. Step 1: Understand BFS role in connected components

        BFS explores all nodes reachable from a given start node, grouping them as one connected component.
      2. Step 2: Differentiate BFS from other graph properties

        BFS does not directly find shortest paths between arbitrary nodes, max degree, or edge count in this context.
      3. Final Answer:

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

        BFS finds connected components [OK]
      Hint: BFS visits all nodes in one connected group [OK]
      Common Mistakes:
      • Confusing BFS with shortest path only
      • Thinking BFS counts edges or degrees
      • Mixing connected components with graph size
      2. Which of the following Go code snippets correctly initializes a queue for BFS traversal?
      easy
      A. queue := []int{} // empty slice for BFS queue
      B. queue := make(map[int]bool) // map used as queue
      C. queue := 0 // integer used as queue
      D. queue := "queue" // string used as queue"

      Solution

      1. Step 1: Identify correct queue data structure for BFS

        BFS requires a queue to hold nodes; a slice of ints is a common and correct choice in Go.
      2. Step 2: Eliminate incorrect queue initializations

        Maps, integers, or strings cannot function as queues for BFS traversal.
      3. Final Answer:

        queue := []int{} // empty slice for BFS queue -> Option A
      4. Quick Check:

        Queue for BFS = slice of ints [OK]
      Hint: Use slice of ints as queue in Go BFS [OK]
      Common Mistakes:
      • Using map instead of slice for queue
      • Using integer or string as queue
      • Not initializing queue before BFS
      3. Given the following graph adjacency list and BFS code, what is the output number of connected components?
      graph := map[int][]int{
        0: {1},
        1: {0, 2},
        2: {1},
        3: {4},
        4: {3},
        5: {},
      }
      
      visited := make(map[int]bool)
      count := 0
      for node := range graph {
        if !visited[node] {
          queue := []int{node}
          visited[node] = true
          for len(queue) > 0 {
            current := queue[0]
            queue = queue[1:]
            for _, neighbor := range graph[current] {
              if !visited[neighbor] {
                visited[neighbor] = true
                queue = append(queue, neighbor)
              }
            }
          }
          count++
        }
      }
      fmt.Println(count)
      medium
      A. 3
      B. 2
      C. 1
      D. 4

      Solution

      1. Step 1: Identify connected components in the graph

        Nodes 0,1,2 form one component; nodes 3,4 form second; node 5 alone forms third.
      2. Step 2: BFS visits each component once, incrementing count

        Loop visits nodes 0,3,5 as unvisited starts, counting 3 components total.
      3. Final Answer:

        3 -> Option A
      4. Quick Check:

        3 connected components = 3 [OK]
      Hint: Count BFS starts on unvisited nodes [OK]
      Common Mistakes:
      • Counting edges instead of components
      • Missing isolated nodes as components
      • Not marking visited nodes properly
      4. The following BFS code for counting connected components has a bug. What is the error?
      func countComponents(graph map[int][]int) int {
        visited := make(map[int]bool)
        count := 0
        for node := range graph {
          if visited[node] {
            queue := []int{node}
            visited[node] = true
            for len(queue) > 0 {
              current := queue[0]
              queue = queue[1:]
              for _, neighbor := range graph[current] {
                if !visited[neighbor] {
                  visited[neighbor] = true
                  queue = append(queue, neighbor)
                }
              }
            }
            count++
          }
        }
        return count
      }
      medium
      A. The visited map is not initialized
      B. The queue initialization is incorrect
      C. The condition should be if !visited[node], not if visited[node]
      D. The count variable is not incremented

      Solution

      1. Step 1: Analyze the if condition for BFS start

        The code starts BFS only if visited[node] is true, which is wrong; it should start if node is not visited.
      2. Step 2: Understand impact on BFS traversal

        Because of wrong condition, BFS never starts, so count remains zero incorrectly.
      3. Final Answer:

        The condition should be if !visited[node], not if visited[node] -> Option C
      4. Quick Check:

        Start BFS on unvisited nodes [OK]
      Hint: Start BFS only if node is unvisited [OK]
      Common Mistakes:
      • Using visited[node] instead of !visited[node]
      • Not initializing visited map
      • Forgetting to increment count
      5. You have a graph with nodes 0 to 6 and edges: (0-1), (1-2), (3-4), (5-6). Using BFS to find connected components, what is the count if node 7 is isolated and missing from the adjacency list? Choose the correct approach to count all components including isolated nodes.
      hard
      A. Count only nodes connected by edges
      B. Include node 7 in the graph map with empty adjacency list before BFS
      C. Ignore node 7 since it is not in adjacency list
      D. Add node 7 as connected to node 0

      Solution

      1. Step 1: Recognize isolated nodes must be in graph map

        To count isolated nodes as components, they must appear in the graph with empty adjacency lists.
      2. Step 2: Include node 7 with empty neighbors before BFS

        Adding node 7 ensures BFS visits it as a separate component.
      3. Final Answer:

        Include node 7 in the graph map with empty adjacency list before BFS -> Option B
      4. Quick Check:

        Isolated nodes need empty adjacency list [OK]
      Hint: Add isolated nodes with empty lists to graph before BFS [OK]
      Common Mistakes:
      • Ignoring isolated nodes not in adjacency list
      • Assuming isolated nodes are counted automatically
      • Connecting isolated nodes incorrectly
      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