#include<stdio.h>
int cost[10][10],n;
void kruskal()
{
int par[n];
int a=0,b=0,u=0,v=0,min, mincost = 0, ne = 0;
for(int i=0;i<n;i++)
par[i]=-1;
printf("the minimum spanning tree edges are..."); while(ne < n-1)
{
//Find the least cost edge
min = 999;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(cost[i][j] < min)
{
min=cost[i][j];
a=u=i;
b=v=j;
}
//Check if edge select cause cyclicity?
while(par[u]!=-1)
u=par[u];
while(par[v]!=-1)
v=par[v];
if(u!=v)
{
printf("From vertex %d to vertex %d and the cost = %d\n",a
,b
,min
); mincost+=min;
par[v]=u;
ne++;
}
//edge included in MST should not be considered for next iteration
cost[a][b]=cost[b][a]=999;
}
printf("Cost of MST = %d", mincost
); }
void main()
{
printf("Enter the no. of vertices:"); printf("Enter the cost matrix\n"); for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
kruskal();
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IGNvc3RbMTBdWzEwXSxuOwp2b2lkIGtydXNrYWwoKQp7CmludCBwYXJbbl07CmludCBhPTAsYj0wLHU9MCx2PTAsbWluLCBtaW5jb3N0ID0gMCwgbmUgPSAwOwpmb3IoaW50IGk9MDtpPG47aSsrKQpwYXJbaV09LTE7CnByaW50ZigidGhlIG1pbmltdW0gc3Bhbm5pbmcgdHJlZSBlZGdlcyBhcmUuLi4iKTsKd2hpbGUobmUgPCBuLTEpCnsKLy9GaW5kIHRoZSBsZWFzdCBjb3N0IGVkZ2UKbWluID0gOTk5Owpmb3IoaW50IGk9MDtpPG47aSsrKQpmb3IoaW50IGo9MDtqPG47aisrKQppZihjb3N0W2ldW2pdIDwgbWluKQp7Cm1pbj1jb3N0W2ldW2pdOwphPXU9aTsKYj12PWo7Cn0KLy9DaGVjayBpZiBlZGdlIHNlbGVjdCBjYXVzZSBjeWNsaWNpdHk/CndoaWxlKHBhclt1XSE9LTEpCnU9cGFyW3VdOwp3aGlsZShwYXJbdl0hPS0xKQp2PXBhclt2XTsKaWYodSE9dikKewpwcmludGYoIkZyb20gdmVydGV4ICVkIHRvIHZlcnRleCAlZCBhbmQgdGhlIGNvc3QgPSAlZFxuIixhLGIsbWluKTsKbWluY29zdCs9bWluOwpwYXJbdl09dTsKbmUrKzsKfQovL2VkZ2UgaW5jbHVkZWQgaW4gTVNUIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBmb3IgbmV4dCBpdGVyYXRpb24KY29zdFthXVtiXT1jb3N0W2JdW2FdPTk5OTsKfQpwcmludGYoIkNvc3Qgb2YgTVNUID0gJWQiLCBtaW5jb3N0KTsKfQoKdm9pZCBtYWluKCkKewpwcmludGYoIkVudGVyIHRoZSBuby4gb2YgdmVydGljZXM6Iik7CnNjYW5mKCIlZCIsJm4pOwpwcmludGYoIkVudGVyIHRoZSBjb3N0IG1hdHJpeFxuIik7CmZvcihpbnQgaT0wO2k8bjtpKyspCmZvcihpbnQgaj0wO2o8bjtqKyspCnNjYW5mKCIlZCIsJmNvc3RbaV1bal0pOwprcnVza2FsKCk7Cn0=