MCPcopy Create free account
hub / github.com/SuprDewd/CompetitiveProgramming / dijkstra

Function dijkstra

code/graph/dijkstra.cpp:6–20  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4 return dist[a] != dist[b] ? dist[a] < dist[b] : a < b; }
5};
6pair<int*, int*> dijkstra(int n, int s, vii *adj) {
7 dist = new int[n];
8 dad = new int[n];
9 rep(i,0,n) dist[i] = INF, dad[i] = -1;
10 set<int, cmp> pq;
11 dist[s] = 0, pq.insert(s);
12 while (!pq.empty()) {
13 int cur = *pq.begin(); pq.erase(pq.begin());
14 rep(i,0,size(adj[cur])) {
15 int nxt = adj[cur][i].first,
16 ndist = dist[cur] + adj[cur][i].second;
17 if (ndist < dist[nxt]) pq.erase(nxt),
18 dist[nxt] = ndist, dad[nxt] = cur, pq.insert(nxt);
19 } }
20 return pair<int*, int*>(dist, dad); }
21// vim: cc=60 ts=2 sts=2 sw=2:

Callers 1

testFunction · 0.85

Calls 3

insertMethod · 0.45
emptyMethod · 0.45
eraseMethod · 0.45

Tested by 1

testFunction · 0.68