Bird
Raised Fist0
DSA Goprogramming~5 mins

Shortest Path in Unweighted Graph Using BFS in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind using BFS to find the shortest path in an unweighted graph?
BFS explores nodes level by level, so the first time it reaches a node, it has found the shortest path to that node because all edges have equal weight.
Click to reveal answer
beginner
In BFS for shortest path, what data structure is commonly used to keep track of nodes to visit next?
A queue is used to keep track of nodes to visit in the order they were discovered, ensuring level-by-level exploration.
Click to reveal answer
intermediate
How do you keep track of the actual shortest path from the start node to a target node in BFS?
By storing the parent (or predecessor) of each visited node, you can backtrack from the target node to the start node to reconstruct the path.
Click to reveal answer
intermediate
Why can't BFS be used directly to find shortest paths in weighted graphs?
Because BFS assumes all edges have equal weight; in weighted graphs, edges have different costs, so BFS might not find the true shortest path.
Click to reveal answer
intermediate
What is the time complexity of BFS when used to find the shortest path in an unweighted graph?
The time complexity is O(V + E), where V is the number of vertices and E is the number of edges, because each node and edge is processed once.
Click to reveal answer
What data structure does BFS use to explore nodes in an unweighted graph?
AQueue
BStack
CPriority Queue
DHash Map
When BFS first visits a node, what does it guarantee about the path to that node?
AIt is the heaviest path
BIt is the longest path
CIt is the shortest path
DIt is a random path
How do you reconstruct the shortest path after BFS completes?
ABy using a stack to store visited nodes
BBy following parent pointers from target to start
CBy sorting nodes by distance
DBy running DFS again
Which of these graphs is BFS NOT suitable for finding shortest paths?
AWeighted graph with different edge costs
BUnweighted graph
CGraph with equal edge weights
DUndirected graph
What is the time complexity of BFS in terms of vertices (V) and edges (E)?
AO(V^2)
BO(log V)
CO(E^2)
DO(V + E)
Explain how BFS finds the shortest path in an unweighted graph and how to reconstruct that path.
Think about how BFS visits nodes and how parents help build the path.
You got /5 concepts.
    Why is BFS not suitable for shortest path in weighted graphs and what algorithm should be used instead?
    Consider edge weights and how BFS treats them.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does BFS (Breadth-First Search) help find in an unweighted graph?
      easy
      A. The node with the highest degree
      B. The longest path in the graph
      C. The shortest path from a start node to all other nodes
      D. The minimum spanning tree

      Solution

      1. Step 1: Understand BFS traversal

        BFS explores nodes level by level starting from the source node, visiting all neighbors before moving deeper.
      2. Step 2: BFS finds shortest paths in unweighted graphs

        Because BFS visits nodes in order of increasing distance, the first time it reaches a node is via the shortest path.
      3. Final Answer:

        The shortest path from a start node to all other nodes -> Option C
      4. Quick Check:

        BFS = Shortest path in unweighted graph [OK]
      Hint: BFS visits nodes by distance layers to find shortest paths [OK]
      Common Mistakes:
      • Confusing BFS with DFS for shortest path
      • Thinking BFS finds longest paths
      • Mixing BFS with minimum spanning tree algorithms
      2. Which Go data structure is best to implement the queue needed for BFS?
      easy
      A. map
      B. channel
      C. struct
      D. slice

      Solution

      1. Step 1: Identify queue requirements in BFS

        BFS requires a FIFO (first-in, first-out) structure to process nodes in order.
      2. Step 2: Use slice as queue in Go

        Slices can be used to append at the end and remove from the front, effectively acting as a queue.
      3. Final Answer:

        slice -> Option D
      4. Quick Check:

        Queue for BFS = slice [OK]
      Hint: Use slice with append and slicing for queue in Go [OK]
      Common Mistakes:
      • Using map which is unordered
      • Using struct without queue logic
      • Using channel without concurrency context
      3. What is the output distance array after running BFS from node 0 on this graph?
      graph := [][]int{
        {1, 2},
        {0, 3},
        {0, 3},
        {1, 2, 4},
        {3},
      }
      
      medium
      A. [0, 1, 1, 2, 3]
      B. [0, 1, 2, 3, 4]
      C. [0, 1, 1, 1, 2]
      D. [0, 2, 2, 3, 4]

      Solution

      1. Step 1: Initialize distances and start BFS from node 0

        Distance[0] = 0, others = -1 (unvisited). Queue starts with 0.
      2. Step 2: Visit neighbors level by level

        From 0: neighbors 1 and 2 get distance 1. From 1 and 2: neighbor 3 gets distance 2. From 3: neighbor 4 gets distance 3.
      3. Final Answer:

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

        Distances = [0,1,1,2,3] [OK]
      Hint: Track BFS layers to assign distances incrementally [OK]
      Common Mistakes:
      • Assigning wrong distances to neighbors
      • Confusing node indices
      • Not initializing distances properly
      4. Identify the bug in this BFS code snippet for shortest path:
      func BFS(graph [][]int, start int) []int {
        dist := make([]int, len(graph))
        for i := range dist {
          dist[i] = -1
        }
        dist[start] = 0
        queue := []int{start}
        for len(queue) > 0 {
          node := queue[0]
          queue = queue[1:]
          for _, neighbor := range graph[node] {
            if dist[neighbor] == 0 {
              dist[neighbor] = dist[node] + 1
              queue = append(queue, neighbor)
            }
          }
        }
        return dist
      }
      
      medium
      A. dist[neighbor] == 0 should be dist[neighbor] == -1
      B. queue initialization is wrong
      C. dist[start] should be -1
      D. for loop over neighbors is incorrect

      Solution

      1. Step 1: Check distance initialization and visit condition

        Distances start at -1 for unvisited nodes. The condition to visit neighbors should check for -1, not 0.
      2. Step 2: Fix condition to correctly detect unvisited neighbors

        Change if dist[neighbor] == 0 to if dist[neighbor] == -1 to avoid skipping nodes.
      3. Final Answer:

        dist[neighbor] == 0 should be dist[neighbor] == -1 -> Option A
      4. Quick Check:

        Check unvisited with -1, not 0 [OK]
      Hint: Use -1 to mark unvisited nodes in BFS distance array [OK]
      Common Mistakes:
      • Checking visited nodes incorrectly
      • Initializing distances with zero
      • Modifying queue incorrectly
      5. Given a graph with nodes 0 to 5 and edges:
      0-1, 0-2, 1-3, 2-3, 3-4, 4-5
      What is the shortest path from node 0 to node 5 using BFS?
      hard
      A. [0, 2, 3, 4, 5]
      B. [0, 1, 3, 4, 5]
      C. [0, 1, 2, 3, 4, 5]
      D. [0, 2, 4, 5]

      Solution

      1. Step 1: Explore neighbors from node 0

        From 0, neighbors are 1 and 2. Both at distance 1.
      2. Step 2: Explore neighbors from 1 and 2

        From 1: neighbor 3; from 2: neighbor 3. Node 3 is at distance 2.
      3. Step 3: Explore neighbors from 3, then 4, then 5

        From 3: neighbor 4 (distance 3). From 4: neighbor 5 (distance 4). Path is 0->1->3->4->5 or 0->2->3->4->5.
      4. Step 4: Choose shortest path with earliest discovery

        BFS discovers 1 before 2, so path is [0,1,3,4,5].
      5. Final Answer:

        [0, 1, 3, 4, 5] -> Option B
      6. Quick Check:

        Shortest path BFS = [0,1,3,4,5] [OK]
      Hint: BFS finds shortest path by earliest node discovery [OK]
      Common Mistakes:
      • Choosing longer paths ignoring BFS order
      • Skipping nodes in path reconstruction
      • Confusing path with distance array
      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