Finding shortest paths in a DAG is simpler than Dijkstra. No need for a priority queue or visited set. Process nodes in topological order. For each node , relax all outgoing edges by trying to update dp[v] = min(dp[v], dp[u] + w(u,v)).
When you reach node , all possible paths to have been considered. This runs in , faster than Dijkstra's . The topological order guarantees you process nodes in the right sequence.
Space complexity is for the data structures used.