Program 1
Program 1
Design and implement C/C++ Program to find Minimum Cost Spanning Tree
of a given connected undirected graph using Kruskal's algorithm.
#include<stdio.h>
int min=0,cost[10][10],parent[10],i,j,x,y,n;
void main()
{
int count=0,tot=0,flag=0;
void find_min();
int check_cycle();
printf("enter the no of vertices\n");
scanf("%d",&n);
printf("enter the matrix\n");
printf("enter 999 for self loops and no edge\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
scanf("%d",&cost[i][j]);
parent[j]=0;
}
while(count!=n-1&&min!=999)
{
find_min();
flag=check_cycle(x,y);
if(flag==1)
{
printf("%d-->%d=%d\n",x,y,cost[x][y]);
count++;
tot+=cost[x][y];
}
cost[x][y]=cost[y][x]=999;
}
printf("the total cost=%d",tot);
void find_min()
{
min=999;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(cost[i][j]<min)
{
min=cost[i][j];
x=i;
y=j;
}
}
int check_cycle(int x,int y)
{
if((parent[x]==parent[y])&&(parent[x]!=0))
return 0;
else if(parent[x]==0&&parent[y]==0)
parent[x]=parent[y]=x;
else if(parent[x]==0)
parent[y]=parent[x];
else if(parent[y]==0)
parent[y]=parent[x];
else if(parent[x]!=parent[y])
parent[y]=parent[x];
return 1;
}