Which algorithm is commonly used to find the shortest path in a graph where all edges have non-negative weights?
A) Dijkstra's algorithm
B) Prim's algorithm
C) Bellman-Ford algorithm
D) Kruskal's algorithm