Advertisement
Sidsh

Untitled

Feb 4th, 2022
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std ;
  3.  
  4. int cost[100][100] , n  ;
  5.  
  6. int getMin(int dist[] , bool visited[])
  7. {
  8.     int key = 0 ;
  9.     int min = INT_MAX ;
  10.     for(int i=0;i < n ; i++){
  11.         if(!visited[i] && dist[i]<min){
  12.             min = dist[i] ;
  13.             key = i ;
  14.         }
  15.     }
  16.     return key ;
  17. }
  18.  
  19. void display(int dist[] , int par[] ){
  20.    for(int i =0 ;i < n ;i++){
  21.        int temp = par[i] ;
  22.        cout<<i << " <- " ;
  23.        while(temp!=-1)
  24.        {
  25.            cout<< temp << " <- " ;
  26.            temp = par[temp] ;
  27.        }
  28.        cout<<endl;
  29.        cout<<"::::Distance = " << dist[i] ;
  30.        cout<<endl;
  31.    }
  32. }
  33.  
  34.  
  35. void dijkstra(int src ){
  36.     int par[100] , dist[100] ;
  37.     bool visited[100] ={0} ;
  38.     fill(dist , dist+n  , INT_MAX ) ;
  39.  
  40.     dist[src] =0 ;
  41.     par[src] =-1 ;
  42.  
  43.     for(int g = 0  ;g<n-1 ; g++){
  44.         int u = getMin( dist ,  visited )  ;
  45.         visited[u] = true ;
  46.         cout<< " min = " << u <<endl;
  47.         for(int v =0 ; v< n ;v++){
  48.             if(!visited[v] && (dist[u]+cost[u][v]) <  dist[v] && cost[u][v]!=999)
  49.             {
  50.                 par[v] = u ;
  51.                 dist[v] = dist[u] + cost[u][v] ;
  52.             }
  53.         }
  54.     }
  55.  
  56.     display(dist , par) ;
  57. }
  58.  
  59.  
  60.  
  61. int main(void) {
  62.     cout<<"Enter n : " ;
  63.     cin>>n ;
  64.     cout<<"Enter cost matrix : \n" ;
  65.     for(int i = 0 ;i < n ; i++){
  66.         for(int j = 0 ; j< n ; j++)cin>>cost[i][j] ;
  67.     }
  68.     int src ;
  69.     cout<<"\nEnter source : " ;  cin>>src ;
  70.     dijkstra(src) ;
  71. }
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement