Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <limits.h>
- #define V 5
- int minDistance(int dist[], int visited[])
- {
- int mini = INT_MAX, min_index,i;
- for(i=0;i<V;i++)
- {
- if (visited[i] == 0 && dist[i] <= mini)
- {
- mini = dist[i];
- min_index = i;
- }
- }
- return min_index;
- }
- void printSolution(int dist[])
- {
- int i;
- printf("Vertx\tDist");
- for(i=0;i<V;i++)
- printf("\n%d\t%d", i, dist[i]);
- }
- void dijkstra(int graph[V][V], int src)
- {
- int dist[V], visited[V], i, count, v;
- for(i=0;i<V;i++)
- {
- dist[i] = INT_MAX;
- visited[i] = 0;
- }
- dist[src] = 0;
- for(count=0;count<V-1;count++)
- {
- int u = minDistance(dist, visited);
- visited[u] = 1;
- for(v=0;v<V;v++)
- if (!visited[v] && graph[u][v] && dist[u] != INT_MAX && dist[u]+graph[u][v] < dist[v])
- dist[v] = dist[u] + graph[u][v];
- }
- printSolution(dist);
- }
- void main()
- {
- int graph[V][V] = {{0,6,0,1,0},
- {6,0,5,2,2},
- {0,5,0,0,5},
- {1,2,0,0,1},
- {0,2,5,1,0}};
- dijkstra(graph, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment