Shortest Path
Shortest Path
h>
#include <stdlib.h>
#include <limits.h>
#define V 5
printf("Edge \tWeight\n");
for (int i = 1; i < V; i++)
printf("%d - %d \t%d \n", parent[i], i, graph[i][parent[i]]);
}
struct Edge {
int src, dest, weight;
};
int find(int parent[], int i) {
if (parent[i] != i)
parent[i] = find(parent, parent[i]);
return parent[i];
}
printf("Edge \tWeight\n");
for (int i = 0, e = 0; e < V - 1 && i < E; i++) {
int u = find(parent, edges[i].src);
int v = find(parent, edges[i].dest);
if (u != v) {
printf("%d - %d \t%d\n", edges[i].src, edges[i].dest, edges[i].weight);
mstCost += edges[i].weight;
Union(parent, rank, u, v);
e++;
}
}
printf("Total MST cost: %d\n", mstCost);
}
int main() {
int graph[V][V] = {{0, 2, 0, 6, 0},
{2, 0, 3, 8, 5},
{0, 3, 0, 0, 7},
{6, 8, 0, 0, 9},
{0, 5, 7, 9, 0}};
printf("Dijkstra's Algorithm:\n");
dijkstra(graph, 0);
printf("\nPrim's MST:\n");
primMST(graph);
printf("\nKruskal's MST:\n");
kruskalMST(edges, E);
return 0;
}
OUTPUT
Dijkstra's Algorithm:
Vertex Distance from Source
0 0
1 2
2 5
3 6
4 7
Prim's MST:
Edge Weight
0-1 2
1-2 3
0-3 6
1-4 5
Kruskal's MST:
Edge Weight
0-1 2
1-2 3
0-3 6
1-4 5
Total MST cost: 16