#include<stdio.h> int p,q,u,v,n; int min=99; int minCost=0; int t[50][2],i,j; int parent[50],edge[50][50]; int main(){ clrsrc(); printf("\nEnter the number of nodes"); scanf("%d",&n); for(i=0;i<n;i++){ printf("%d",i); parent[i]=-1; } printf("\n"); for(i=0;i<n;i++){ printf("%c",65+i); for(j=0;j<n;j++){ scanf("%d",&edge[i][j]); } for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(edge[1][j]!=99){ if(min<edge[i][j]){ min=edge[i][j]; u=i; v=j; } p=find(u); q=find(v); if(p!=q){ t[i][0]=u; t[i][1]=v; minCost =minCost+edge[u][v]; sunion(p,q); } else{ t[i][0]=-1; t[i][1]=-1; } } } } min = 99; } printf("Minimum cost is %d\n Minimum spanning tree is\n",minCost); for(i=0;i<n;i++){ if(t[i][0]!=-1 && t[i][1]!=1){ printf("%c %c %d",65+t[i][0],65+t[i][1],edge[t[i][0]] [t[i][1]]); printf("\n"); } getch(); } sunion(int I,int m){ parent[] = m; } find(int I){ if(parent[1]>0){ I=parent[I]; } return I; } }