Advertisement
Jasir

Dijkestra

Oct 5th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1.  
  2. vector <pii> g[mx];
  3. priority_queue <pii, vector <pii>, greater <pii> > q;
  4. int dis[mx];
  5.  
  6. int dijkestra(int a, int b, int n){
  7.     for(int i=1;i<=n;i++) dis[i] = inf;
  8.     dis[a] = 0;
  9.     q.push({0, a});
  10.     while(!q.empty()){
  11.         pii p = q.top();
  12.         q.pop();
  13.         if(dis[p.se]==p.fi){
  14.             for(auto u: g[p.se]){
  15.                 if(dis[u.fi] > dis[p.se] + u.se){
  16.                     dis[u.fi] = dis[p.se] + u.se;
  17.                     q.push({dis[u.fi], u.fi});
  18.                 }
  19.             }
  20.         }
  21.     }
  22.     return dis[b];
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement