Skip to content

Instantly share code, notes, and snippets.

@suryansh011
Created November 10, 2021 12:06
Show Gist options
  • Save suryansh011/c7e589698c4a4765102c43dcceea3830 to your computer and use it in GitHub Desktop.
Save suryansh011/c7e589698c4a4765102c43dcceea3830 to your computer and use it in GitHub Desktop.
Kruskal Implementation in C
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int i, j, k, a, b, u, v, n, ne=1;
int min, mincost=0, cost[9][9], parent[9];
int find(int i) {
while(parent[i])
i = parent[i];
return i;
}
int uni(int i,int j) {
if(i != j) {
parent[j] = i;
return 1;
}
return 0;
}
int main() {
printf("\nImplementation of Kruskal's algorithm\n");
printf("\nEnter the number of vertices: ");
scanf("%d", &n);
printf("\nEnter the cost adjacency matrix: \n");
for(i = 1; i <= n; i++) {
for(j = 1;j <= n; j++) {
scanf("%d", &cost[i][j]);
if(cost[i][j] == 0)
cost[i][j] = 999;
}
}
printf("\nThe edges of Minimum Cost Spanning Tree are: \n");
while(ne < n) {
for(i = 1, min = 999; i <= n; i++) {
for(j = 1;j <= n; j++) {
if(cost[i][j] < min) {
min = cost[i][j];
a = u = i;
b = v = j;
}
}
}
u = find(u);
v = find(v);
if(uni(u,v)) {
printf("%d edge (%d, %d) = %d\n", ne++, a, b, min);
mincost += min;
}
cost[a][b] = cost[b][a] = 999;
}
printf("\nMinimum Cost = %d\n", mincost);
printf("\nNAME\nROLL\nSECTION");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment