Author: Zi Song Yeoh
Dijkstra’s Algorithm, Graph Theory
There’s a weighted graph with n vertices and m edges. Additionally, each edge has a color. It is known the cost to go from one edge of color i to one edge of color j for all possible (i, j). Find the shortest path from vertex s to all other vertices.
The first subtask can be solved using BFS, since the graph is unweighted and the colors of each edge is the same. Similarly, subtask 2 can be solved with a direct application of Dijkstra’s Algorithm.
The last subtask requires a small trick. We construct a new graph where each vertex is split into k different vertices. In the new graph, the vertex (i, j) denotes that we are at vertex i and the color of the last edge we used is color j. Now, we can apply Dijkstra’s Algorithm on this new graph and get the correct answer.
AUTHOR’S AND TESTER’S SOLUTIONS:
Author’s solution can be found here.
Tester’s solution can be found here.