Dijkstra
unknown
c_cpp
2 years ago
964 B
5
Indexable
void dijkstra(vector<int>& signalReceivedAt, int source, int n) { priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; pq.push({0, source}); signalReceivedAt[source] = 0; while (!pq.empty()) { int currNodeTime = pq.top().first; int currNode = pq.top().second; pq.pop(); if (currNodeTime > signalReceivedAt[currNode]) { continue; } for (pair<int, int> edge : adj[currNode]) { int time = edge.first; int neighborNode = edge.second; if (signalReceivedAt[neighborNode] > currNodeTime + time) { signalReceivedAt[neighborNode] = currNodeTime + time; pq.push({signalReceivedAt[neighborNode], neighborNode}); } } } }
Editor is loading...