Weighted Graph
Weights represent application-specific costs.
Weights may be positive, zero, or negative depending on the algorithm.
Dijkstra requires non-negative edge weights.
Bellman-Ford can handle negative weights.
Weights can exist on directed or undirected edges.