1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct Edge{int u,v,w;};
  4. int p[100];
  5. int find(int i)
  6. {
  7. while(p[i]!=i)i=p[i];
  8. return i;
  9. }
  10.  
  11. int cmp(const void *a,const void *b)
  12. {
  13. return((struct Edge*)a)->w-((struct Edge*)b)->w;
  14. }
  15.  
  16. int main()
  17. {
  18. int V=4,E=5,count=0,total=0;
  19. struct Edge e[]={{0,1,10},{0,2,6},{0,3,5},{1,3,15},{2,3,4}};
  20.  
  21. qsort(e,E,sizeof(e[0]),cmp);
  22. for(int i=0;i<V;i++)
  23. p[i]=i;
  24. printf("Eges in MST");
  25. for(int i=0;i<E && count<V-1;i++)
  26. {
  27. int root_u=find(e[i].u);
  28. int root_v=find(e[i].v);
  29.  
  30. if(root_u!=root_v)
  31. {
  32. printf("%d-%d(%d)\n",e[i].u,e[i].v,e[i].w);
  33. total+=e[i].w;
  34. p[root_u]=root_v;
  35. count++;
  36. }
  37. }
  38. printf("total cost:%d",total);
  39. return 0;
  40. }