Akatsuki13

Dijkstra

Oct 28th, 2016
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. typedef pair<int, int> ii;   //The Only Macros I use...usually
  2. typedef vector<int> vi;
  3. vector<vector< ii > > graph;
  4.  
  5. int n;
  6. vi dist;
  7.  
  8. void dijkstra(int s)
  9. {
  10.     dist.assign( graph.size(), 100000 );
  11.     dist[s] = 0;
  12.     priority_queue< ii, vector<ii>, greater<ii> > pq;
  13.     pq.push({0, s});
  14.  
  15.     while(!pq.empty())
  16.     {
  17.         ii v = pq.top();
  18.         pq.pop();
  19.  
  20.         for(int i = 0 ; v.first < dist[v.second] && i < graph[v.second].size(); i++)
  21.         {
  22.             ii u = graph[v.second][i];
  23.  
  24.             if(dist[v.second] + u.second < dist[u.first])
  25.                 pq.push({dist[u.first] = dist[v.second] + u.second, u.first});
  26.         }
  27.  
  28.     }
  29. }
Add Comment
Please, Sign In to add comment