You practiced recognizing which shortest-path algorithm to use based on graph properties. BFS for unweighted, Dijkstra for non-negative weights, Bellman-Ford for negative weights, Floyd-Warshall for all-pairs with small N.
You solved five problems: standard Dijkstra, negative cycles with reachability checks, state-space Dijkstra with coupon tracking, counting multiple properties during Dijkstra, and reverse Floyd-Warshall for deletion queries.
Next section: Strongly Connected Components.