fork download
  1. #include<stdio.h>
  2. #include<conio.h>
  3. int p,q,u,v,n;
  4. int min=99,mincost=0;
  5. int t[50][2],i,j;
  6. int parent[50],edge[50][50];
  7. main()
  8. {
  9. clrscr();
  10. printf("\n Enter the number of nodes");
  11. scanf("%d",&n);
  12. for(i=0;i<n;i++)
  13. {
  14. printf("%c\t",65+i);
  15. parent[i]=-1;
  16. }
  17. printf("\n");
  18. for(i=0;i<n;i++)
  19. {
  20. printf("%c",65+i);
  21. for(j=0;j<n;j++)
  22. scanf("%d",&edge[i][j]);
  23. }
  24. for(i=0;i<n;i++)
  25. {
  26. for(j=0;j<n;j++)
  27. if(edge[i][j]!=99)
  28. if(min>edge[i][j])
  29. {
  30. min=edge[i][j];
  31. u=i;
  32. v=j;
  33. }
  34. p=find(u);
  35. q=find(v);
  36. if(p!=q)
  37. {
  38. t[i][0]=u;
  39. t[i][1]=v;
  40. 18
  41.  
  42. mincost=mincost+edge[u][v];
  43. sunion(p,q);
  44. }
  45. Else
  46. {
  47. t[i][0]=-1;t[i][1]=-1;
  48. }
  49. min=99;
  50. }
  51. printf("Minimum cost is %d\n Minimum spanning tree is\n" ,mincost);
  52. for(i=0;i<n;i++)
  53. if(t[i][0]!=-1 && t[i][1]!=-1)
  54. {
  55. printf("%c %c %d", 65+t[i][0],65+t[i][1],edge[t[i][0]][t[i][1]]);printf("\n");
  56. }
  57. getch();
  58. }
  59. sunion(int l,int m)
  60. {
  61. parent[l]=m;
  62. }
  63. find(int l)
  64. {
  65. if(parent[l]>0)
  66. i=parent[i];
  67. return i;
  68. }
Success #stdin #stdout 0.02s 25528KB
stdin
Standard input is empty
stdout
#include<stdio.h> 
#include<conio.h> 
int p,q,u,v,n; 
int min=99,mincost=0; 
int t[50][2],i,j; 
int parent[50],edge[50][50]; 
main() 
{ 
clrscr(); 
printf("\n Enter the number of nodes"); 
scanf("%d",&n); 
for(i=0;i<n;i++) 
{ 
printf("%c\t",65+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[i][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; 
18 
 
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 l,int m) 
{ 
parent[l]=m; 
} 
find(int l) 
{ 
if(parent[l]>0) 
i=parent[i]; 
return i; 
}