Advertisement
_no0B

Untitled

Mar 17th, 2020
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.62 KB | None | 0 0
  1. ///dijkstra
  2. priority_queue < pair < int,int > > q;
  3. vector < pair < int,int > > v[N];
  4. int dis[N];
  5. void dijkstra(int s, int n){
  6.     int i;
  7.     for(i = 1; i<=n; i++) dis[i] = MAX;
  8.     dis[s] = 0;
  9.     q.push(mp(0,s));
  10.     pair < int,int > p;
  11.     while(!q.empty()){
  12.         p = q.top();
  13.         q.pop();
  14.         s = p.second;
  15.         if(dis[s]<-p.first) continue;
  16.         for(i = 0; i<v[s].size(); i++){
  17.             if(dis[v[s][i].first]>dis[s]+v[s][i].second){
  18.                 dis[v[s][i].first] = dis[s]+v[s][i].second;
  19.                 q.push(mp(-dis[v[s][i].first],v[s][i].first));
  20.             }
  21.         }
  22.     }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement