Advertisement
Sidsh

Untitled

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