Write A Program To Implement Kruskal's Algorithm
Write A Program To Implement Kruskal's Algorithm
Algorithm:
MST_Kruskal (G,w)
1. A ←Q
2. For each vertex v ∈ V[G]
3. Do Make_Set(v)
4. Sort the edges of E into non-decreasing order by weight w
5. For each edge (u,v) ∈ E taken in non-decreasing order by weight
6. Do if Find_Set(u) ≠ Find_Set(v)
7. Then A←A U {u,v}
8. Union(u,v)
9. Return A
Source Code:
#include <stdio.h>
int main()
{
int n,i,j,k,e,t,sum,u,v;
int adj[10][10];
int a[10][3];
int b[2][10];
//Edge Counter
e=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(adj[i][j]!=0)
e++;
e/=2;
/* //Matrix Display
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",adj[i][j]);
}
printf("\n");
}
*/
printf("\n");
}
t=a[j][1];
a[j][1]=a[j+1][1];
a[j+1][1]=t;
t=a[j][2];
a[j][2]=a[j+1][2];
a[j+1][2]=t;
}
printf("\n");
}
if(b[1][u]!=b[1][v])
{
sum+=a[i][0];
b[1][u]=b[1][v]=100;
}
}
printf("After Union:\n");
for(i=0;i<2;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",b[i][j]);
}
printf("\n");
}
printf("Cost=%d\n",sum);
return 0;
}
Output:
Enter the number of vertices:4
Enter the adjacency matrix:
0121
1030
2302
1020
Edge Counted = 5
Cost=4