Bird
Raised Fist0
DSA C#programming~5 mins

Shortest Path in DAG Using Topological Order in DSA C# - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Directed Acyclic Graph (DAG)?
A DAG is a graph with directed edges and no cycles, meaning you cannot start at one node and follow a path that leads back to the same node.
Click to reveal answer
intermediate
Why do we use topological order for shortest path in a DAG?
Topological order arranges nodes so all edges go from earlier to later nodes, allowing us to relax edges in one pass without revisiting nodes, making shortest path calculation efficient.
Click to reveal answer
beginner
What does 'relaxing an edge' mean in shortest path algorithms?
Relaxing an edge means checking if the current known shortest distance to a node can be improved by going through another node connected by that edge, and updating it if yes.
Click to reveal answer
beginner
In the shortest path algorithm for DAG, what initial distance values do we assign?
We set the distance to the source node as 0 and all other nodes as infinity (or a very large number) to indicate they are not yet reachable.
Click to reveal answer
intermediate
What is the time complexity of finding shortest paths in a DAG using topological order?
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 property must a graph have to use topological order for shortest path?
AIt must be a Directed Acyclic Graph (DAG)
BIt must be undirected
CIt must contain cycles
DIt must be a tree
What is the first step in finding shortest paths in a DAG using topological order?
AFind the topological order of the graph
BInitialize all distances to zero
CRelax all edges randomly
DRun Dijkstra's algorithm
When relaxing edges in shortest path for DAG, what do we update?
AThe topological order
BDistance to the destination node if a shorter path is found
CThe graph structure
DThe source node
What initial distance is assigned to the source node in shortest path calculation?
ANumber of nodes
BInfinity
C-1
D0
What is the advantage of using topological order for shortest path in DAG over Dijkstra's algorithm?
AIt uses more memory
BIt works with negative cycles
CIt runs faster with O(V + E) time complexity
DIt requires no initialization
Explain how topological order helps in finding the shortest path in a DAG.
Think about how ordering nodes helps avoid repeated work.
You got /4 concepts.
    Describe the steps to find shortest paths from a source node in a DAG using topological order.
    Start from initialization, then order, then edge relaxation.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main advantage of using topological order to find the shortest path in a Directed Acyclic Graph (DAG)?
      easy
      A. It sorts edges by weight.
      B. It guarantees the graph has cycles.
      C. It allows processing vertices in a linear order without revisiting nodes.
      D. It finds the longest path instead of the shortest.

      Solution

      1. Step 1: Understand topological order in DAG

        Topological order arranges vertices so that all edges go from earlier to later vertices, ensuring no cycles.
      2. Step 2: Use topological order for shortest path

        Processing vertices in this order allows updating shortest distances without revisiting nodes, making the algorithm efficient.
      3. Final Answer:

        It allows processing vertices in a linear order without revisiting nodes. -> Option C
      4. Quick Check:

        Topological order = linear processing [OK]
      Hint: Topological order processes nodes once in DAG [OK]
      Common Mistakes:
      • Thinking topological order works with cycles
      • Confusing shortest path with longest path
      • Assuming edges are sorted by weight
      2. Which of the following C# code snippets correctly initializes the distance array for shortest path calculation in a DAG with 5 vertices?
      easy
      A. int[] dist = new int[5]; for(int i = 0; i < 5; i++) dist[i] = int.MaxValue;
      B. int[] dist = new int[5] {0, 0, 0, 0, 0};
      C. int[] dist = new int[5]; dist.Fill(int.MaxValue);
      D. int[] dist = new int[5]; for(int i = 0; i < 5; i++) dist[i] = 0;

      Solution

      1. Step 1: Understand distance initialization

        Distances should start as infinity (int.MaxValue) except the source, to represent unknown paths.
      2. Step 2: Check code correctness

        int[] dist = new int[5]; for(int i = 0; i < 5; i++) dist[i] = int.MaxValue; correctly sets all distances to int.MaxValue using a loop. int[] dist = new int[5] {0, 0, 0, 0, 0}; sets all to zero, which is incorrect. int[] dist = new int[5]; dist.Fill(int.MaxValue); uses a non-existent Fill method. int[] dist = new int[5]; for(int i = 0; i < 5; i++) dist[i] = 0; sets all to zero, which is wrong.
      3. Final Answer:

        int[] dist = new int[5]; for(int i = 0; i < 5; i++) dist[i] = int.MaxValue; -> Option A
      4. Quick Check:

        Initialize distances to max value [OK]
      Hint: Initialize distances with int.MaxValue except source [OK]
      Common Mistakes:
      • Setting all distances to zero
      • Using non-existent array methods
      • Not initializing distances before algorithm
      3. Consider the following DAG with edges and weights:
      0 -> 1 (2), 0 -> 2 (4), 1 -> 2 (1), 1 -> 3 (7), 2 -> 4 (3), 3 -> 4 (1)
      If we run the shortest path algorithm from vertex 0 using topological order, what is the shortest distance to vertex 4?
      medium
      A. 10
      B. 6
      C. 7
      D. 9

      Solution

      1. Step 1: Find topological order and initialize distances

        Topological order can be [0,1,2,3,4]. Initialize dist[0]=0, others = infinity.
      2. Step 2: Relax edges in topological order

        From 0: dist[1]=2, dist[2]=4.
        From 1: dist[2]=min(4,2+1=3)=3, dist[3]=2+7=9.
        From 2: dist[4]=3+3=6.
        From 3: dist[4]=min(6,9+1=10)=6.
      3. Final Answer:

        6 -> Option B
      4. Quick Check:

        Shortest distance to 4 = 6 [OK]
      Hint: Relax edges in topological order to update distances [OK]
      Common Mistakes:
      • Not updating distances after relaxation
      • Using wrong topological order
      • Ignoring better paths through intermediate nodes
      4. The following C# code attempts to find shortest paths in a DAG but has a bug:
      int[] dist = new int[V];
      for(int i = 0; i < V; i++) dist[i] = int.MaxValue;
      dist[source] = 0;
      foreach(int u in topologicalOrder)
      {
      foreach(var edge in graph[u])
      {
      int v = edge.Item1;
      int weight = edge.Item2;
      if(dist[u] + weight < dist[v])
      dist[v] = dist[u] + weight;
      }
      }

      What is the bug in this code?
      medium
      A. No check if dist[u] is int.MaxValue before adding weight
      B. Edges are not relaxed in correct order
      C. topologicalOrder is not computed
      D. dist array is not initialized to int.MaxValue

      Solution

      1. Step 1: Analyze distance update condition

        The code adds dist[u] + weight without checking if dist[u] is int.MaxValue, which can cause overflow.
      2. Step 2: Identify missing check

        Before adding weight, code should check if dist[u] != int.MaxValue to avoid invalid calculations.
      3. Final Answer:

        No check if dist[u] is int.MaxValue before adding weight -> Option A
      4. Quick Check:

        Check dist[u] before adding weight [OK]
      Hint: Check dist[u] != int.MaxValue before adding weight [OK]
      Common Mistakes:
      • Ignoring overflow from adding to int.MaxValue
      • Assuming topological order is always computed
      • Thinking initialization is missing
      5. Given a DAG with vertices 0 to 5 and edges:
      0->1(3), 0->2(6), 1->2(4), 1->3(4), 1->4(11), 2->3(8), 3->4(-4), 4->5(2)
      Using shortest path with topological order from vertex 0, what is the shortest distance to vertex 5?
      hard
      A. 10
      B. 9
      C. 7
      D. 5

      Solution

      1. Step 1: Determine topological order and initialize distances

        Possible topological order: [0,1,2,3,4,5]. Initialize dist[0]=0, others = infinity.
      2. Step 2: Relax edges in order

        From 0: dist[1]=3, dist[2]=6.
        From 1: dist[2]=min(6,3+4=7)=6, dist[3]=3+4=7, dist[4]=3+11=14.
        From 2: dist[3]=min(7,6+8=14)=7.
        From 3: dist[4]=min(14,7+(-4)=3)=3.
        From 4: dist[5]=3+2=5.
      3. Final Answer:

        5 -> Option D
      4. Quick Check:

        Shortest distance to 5 = 5 [OK]
      Hint: Relax edges in topological order, watch negative weights carefully [OK]
      Common Mistakes:
      • Ignoring negative edge weights
      • Not updating distances after better path found
      • Wrong topological order causing incorrect results
      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