Advertisement
Riz1Ahmed

Dijkstra Algorithm

Feb 19th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. /// Dijkstra Algorithm (single Shortest Path)
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. int main(){
  5.     int n,e,u,v,w,i,j,c;
  6.     cin>>n>>e;
  7.     int dis[n+2],cost[n+2][n+2];
  8.     for (i=0; i<=n; i++){
  9.         dis[i]=1e6;
  10.         for (j=i; j<=n; j++)
  11.             cost[i][j]=cost[j][i]=1e6;
  12.         cost[i][i]=0;
  13.     }
  14.     vector<int> graph[n+5];
  15.     for (i=0; i<e; i++){
  16.         cin>>u>>v>>w;
  17.         graph[u].push_back(v);
  18.         graph[v].push_back(u);
  19.         cost[u][v]=cost[v][u]=w;
  20.     }
  21.     queue<int> q;
  22.     puts("All short path from node 0 is:");
  23.     q.push(0), dis[0]=0;
  24.     while (!q.empty()){
  25.         u=q.front(), q.pop();
  26.         for (auto v:graph[u])
  27.             if (dis[u]+cost[u][v] < dis[v])
  28.                 dis[v]=dis[u]+cost[u][v], q.push(v);
  29.     }
  30.     for (i=0; i<=n; i++) cout<<dis[i]<<" "; puts("");
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement