nkb29597

Dijkstra's Algorithm

Oct 22nd, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #define V 5
  4. int minDistance(int dist[], int visited[])
  5. {
  6.     int mini = INT_MAX, min_index,i;
  7.     for(i=0;i<V;i++)
  8.     {
  9.         if (visited[i] == 0 && dist[i] <= mini)
  10.         {
  11.             mini = dist[i];
  12.             min_index = i;
  13.         }
  14.     }
  15.     return min_index;
  16. }
  17.  
  18. void printSolution(int dist[])
  19. {
  20.     int i;
  21.     printf("Vertx\tDist");
  22.     for(i=0;i<V;i++)
  23.         printf("\n%d\t%d", i, dist[i]);
  24. }
  25.  
  26. void dijkstra(int graph[V][V], int src)
  27. {
  28.     int dist[V], visited[V], i, count, v;
  29.     for(i=0;i<V;i++)
  30.     {
  31.         dist[i] = INT_MAX;
  32.         visited[i] = 0;
  33.     }
  34.     dist[src] = 0;
  35.     for(count=0;count<V-1;count++)
  36.     {
  37.         int u = minDistance(dist, visited);
  38.         visited[u] = 1;
  39.         for(v=0;v<V;v++)
  40.             if (!visited[v] && graph[u][v] && dist[u] != INT_MAX && dist[u]+graph[u][v] < dist[v])
  41.                 dist[v] = dist[u] + graph[u][v];
  42.     }
  43.     printSolution(dist);
  44. }
  45.  
  46. void main()
  47. {
  48.     int graph[V][V] = {{0,6,0,1,0},
  49.                        {6,0,5,2,2},
  50.                        {0,5,0,0,5},
  51.                        {1,2,0,0,1},
  52.                        {0,2,5,1,0}};
  53.     dijkstra(graph, 0);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment