Facebook
From Amarnath, 3 Years ago, written in C.
This paste is a reply to Re: Edited Code from Ample Peccary - view diff
Embed
Download Paste or View Raw
Hits: 231
  1. #include<stdio.h>
  2. #define V 7
  3.  
  4. int findmin(int graph[V][V], int visited[V], int ptr){
  5.     int min = 10000;
  6.     int pos = ptr;
  7.     for(int i=0; i<V; i++){
  8.         if(graph[ptr][i] < min && graph[ptr][i] > 0 && visited[i] == 0){
  9.             min = graph[ptr][i];
  10.             pos = i;
  11.         }
  12.     }
  13.     return pos;
  14.  
  15. }
  16. void display(int graph[V][V], int visited[V]){
  17.     printf("Display \n");
  18.     for(int i=0; i<V; i++){
  19.         for(int j=0; j<V; j++){
  20.  
  21.             printf("%d ", graph[i][j]);
  22.         }
  23.         printf("\n");
  24.     }
  25.     printf("Visited ");
  26.     for(int i=0; i<V; i++){
  27.         printf("%d ", visited[i]);
  28.     }
  29.     printf("\n");
  30.  
  31. }
  32. void trace(int graph[V][V], int visited[V], int ptr, int dest){
  33.     display(graph, visited);
  34.     int pos = findmin(graph, visited, ptr);
  35.     printf("Traversed node = %d\n", pos);
  36.     visited[pos] = 1;
  37.     ptr = pos;
  38.     if(ptr == dest){
  39.         return;
  40.     }
  41.    
  42.     trace(graph, visited, ptr, dest);
  43.    
  44. }
  45.  
  46. int main(){
  47.     // int graph[V][V] = {{0, 4, -1, -1, 8}, {0, 0, 8, -1, 11}, {0, 0, 0, 2, -1},{0,0,0,0,7}, {0,0,0,0,0}};
  48.     int graph[V][V] = {{0,2,6,-1,-1,-1,-1},{-1,0,-1,5,-1,-1,-1},{-1,-1,0,8,-1,-1,-1},{-1,-1,-1,0,10,15,-1},{-1,-1,-1,-1,0,6,2},{-1,-1,-1,-1,-1,0,6},{-1,-1,-1,-1,-1,-1,0}};
  49.     int visited[V] = {0, 0, 0, 0, 0, 0, 0};
  50.     int st = 0;
  51.     int dest = 6;
  52.  
  53.     visited[st] = 1;
  54.    
  55.     trace(graph, visited, st, dest);
  56.     return 0;
  57. }