#include #include #include #include #include using namespace std; typedef pair P; // (weight, vertex) void dijkstra(vector>& graph, int start) { int n = graph.size(); vector dist(n, INT_MAX); priority_queue, greater

> pq; dist[start] = 0; pq.push({0, start}); while (!pq.empty()) { int u = pq.top().second; pq.pop(); for (const auto& edge : graph[u]) { int v = edge.second; int wt = edge.first; if (dist[v] > dist[u] + wt) { dist[v] = dist[u] + wt; pq.push({dist[v], v}); } } } for (int i = 0; i < n; ++i) { cout << "Vertex: " << i << " - Distance: " << dist[i] << endl; } } int main() { int n = 5; // Number of vertices vector> graph(n); graph[0].push_back({10, 1}); graph[0].push_back({5, 3}); graph[1].push_back({1, 2}); graph[1].push_back({2, 3}); graph[2].push_back({4, 4}); graph[3].push_back({2, 1}); graph[3].push_back({9, 2}); graph[3].push_back({2, 4}); graph[4].push_back({6, 0}); graph[4].push_back({7, 2}); dijkstra(graph, 0); return 0; }