Bird
Raised Fist0
DSA C#programming~5 mins

Shortest Path in Unweighted Graph Using BFS in DSA C# - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Shortest Path in Unweighted Graph Using BFS
O(n + m)
Understanding Time Complexity

We want to understand how long it takes to find the shortest path in an unweighted graph using BFS.

How does the time needed grow as the graph gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


// BFS to find shortest path in unweighted graph
void BFS(int start, List<int>[] graph, int[] distance) {
    Queue<int> queue = new Queue<int>();
    queue.Enqueue(start);
    distance[start] = 0;
    while (queue.Count > 0) {
        int node = queue.Dequeue();
        foreach (int neighbor in graph[node]) {
            if (distance[neighbor] == -1) {
                distance[neighbor] = distance[node] + 1;
                queue.Enqueue(neighbor);
            }
        }
    }
}
    

This code finds the shortest distance from a start node to all other nodes in an unweighted graph using BFS.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Visiting each node and checking its neighbors.
  • How many times: Each node is enqueued and dequeued once; each edge is checked once.
How Execution Grows With Input

As the graph grows, the time grows based on nodes and edges.

Input Size (n nodes, m edges)Approx. Operations
10 nodes, 15 edgesAbout 10 + 15 = 25 operations
100 nodes, 200 edgesAbout 100 + 200 = 300 operations
1000 nodes, 5000 edgesAbout 1000 + 5000 = 6000 operations

Pattern observation: The work grows roughly with the number of nodes plus edges.

Final Time Complexity

Time Complexity: O(n + m)

This means the time grows linearly with the number of nodes plus edges in the graph.

Common Mistake

[X] Wrong: "BFS takes O(n²) time because it uses nested loops."

[OK] Correct: BFS visits each node and edge only once, so it does not check all pairs of nodes.

Interview Connect

Understanding BFS time complexity helps you explain how graph searches scale and why BFS is efficient for shortest paths in unweighted graphs.

Self-Check

"What if the graph was represented as an adjacency matrix instead of adjacency lists? How would the time complexity change?"

Practice

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

Solution

  1. Step 1: Understand BFS traversal

    BFS explores nodes level by level starting from the source node.
  2. Step 2: BFS finds shortest paths in unweighted graphs

    Because BFS visits nodes in order of increasing distance, it finds shortest paths.
  3. Final Answer:

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

    BFS = Shortest path in unweighted graph [OK]
Hint: BFS explores neighbors level-wise to find shortest paths [OK]
Common Mistakes:
  • Confusing BFS with DFS for shortest path
  • Thinking BFS finds longest path
  • Assuming BFS counts edges incorrectly
2. Which C# data structure is best to use as a queue for BFS implementation?
easy
A. Queue<T>
B. List<T>
C. Stack<T>
D. Dictionary

Solution

  1. Step 1: Identify BFS traversal order

    BFS uses FIFO order to explore nodes level by level.
  2. Step 2: Choose data structure matching FIFO

    Queue<T> provides FIFO behavior, perfect for BFS.
  3. Final Answer:

    Queue<T> -> Option A
  4. Quick Check:

    Queue = FIFO for BFS [OK]
Hint: Use Queue<T> for BFS to maintain correct node order [OK]
Common Mistakes:
  • Using Stack<T> which is LIFO, wrong for BFS
  • Using List<T> without queue behavior
  • Confusing Dictionary with queue
3. What is the output distance array after running BFS from node 0 on this graph?
Graph edges:
0 - 1
0 - 2
1 - 3
2 - 3
3 - 4
Assume distance to start node 0 is 0 and unreachable nodes have distance -1.
medium
A. [0, 1, 1, 2, 3]
B. [0, 1, 2, 3, 4]
C. [0, 1, 1, 1, 2]
D. [0, -1, -1, -1, -1]

Solution

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

    Distance[0] = 0; others = -1 initially.
  2. Step 2: Visit neighbors level-wise

    From 0: nodes 1 and 2 get distance 1. From 1 and 2: node 3 gets distance 2. From 3: node 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 distances level by level from start node [OK]
Common Mistakes:
  • Assigning wrong distances to nodes
  • Confusing BFS with DFS distances
  • Not initializing unreachable nodes as -1
4. Identify the bug in this BFS shortest path code snippet in C#:
int[] dist = new int[n];
for (int i = 0; i < n; i++) dist[i] = -1;
Queue<int> q = new Queue<int>();
dist[start] = 0;
q.Enqueue(start);
while (q.Count > 0) {
  int u = q.Dequeue();
  foreach (int v in graph[u]) {
    if (dist[v] == 0) {
      dist[v] = dist[u] + 1;
      q.Enqueue(v);
    }
  }
}
medium
A. Enqueue should be done before setting dist[v]
B. Queue should be Stack for BFS
C. dist[v] == 0 should be dist[v] == -1 to check unvisited nodes
D. dist[start] should be -1 initially

Solution

  1. Step 1: Understand distance initialization and visit check

    Distances start at -1 for unvisited nodes; 0 means visited or start node.
  2. Step 2: Check condition for visiting neighbors

    Condition 'dist[v] == 0' wrongly treats unvisited nodes as visited; should be 'dist[v] == -1'.
  3. Final Answer:

    dist[v] == -1 to check unvisited nodes -> Option C
  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 dist[v] == 0 instead of -1
  • Using Stack instead of Queue for BFS
  • Incorrect initial distance for start node
5. Given an unweighted graph with nodes 0 to 5 and edges:
0-1, 0-2, 1-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: Run BFS from node 0 to find shortest distances

    Distances: 0(0), 1(1), 2(1), 3(2), 4(3), 5(4).
  2. Step 2: Trace shortest path back from node 5

    From 5 to 4, 4 to 3, 3 to 1, 1 to 0: 0->1->3->4->5.
  3. Final Answer:

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

    Shortest path = [0,1,3,4,5] [OK]
Hint: Trace BFS parents backward to find shortest path [OK]
Common Mistakes:
  • Attempting path via node 2 (no 2-3 edge)
  • Skipping nodes in path
  • Confusing BFS with DFS path
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