al__nasim

kruskal.cpp

Jan 9th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. int i,j,k,a,b,u,v,n,ne=1;
  3. int min,mincost=0,cost[10][10],parent[10];
  4. int find(int);
  5. int uni(int,int);
  6. int main()
  7. {
  8.     printf("Enter the no of vertices:");
  9.     scanf("%d",&n);
  10.     printf("Enter adjacency matrix:\n");
  11.     for(i=1;i<=n;i++)
  12.     {
  13.         for(j=1;j<=n;j++)
  14.         {
  15.             scanf("%d",&cost[i][j]);
  16.             if(cost[i][j]==0)
  17.                 cost[i][j]=999;
  18.         }
  19.     }
  20.     printf("The edges\n");
  21.     while(ne < n)
  22.     {
  23.         for(i=1,min=999;i<=n;i++)
  24.         {
  25.             for(j=1;j <= n;j++)
  26.             {
  27.                 if(cost[i][j] < min)
  28.                 {
  29.                     min=cost[i][j];
  30.                     a=u=i;
  31.                     b=v=j;
  32.                 }
  33.             }
  34.         }
  35.         u=find(u);
  36.         v=find(v);
  37.         if(uni(u,v))
  38.         {
  39.             printf("%d edge (%d,%d) =%d\n",ne++,a,b,min);
  40.             mincost +=min;
  41.         }
  42.         cost[a][b]=cost[b][a]=999;
  43.     }
  44.     printf("\nMinimum cost = %d\n",mincost);
  45.     //getch();
  46. }
  47. int find(int i)
  48. {
  49.     while(parent[i]){
  50.     i=parent[i];
  51.     printf("%d\n",i);
  52. }
  53.     return i;
  54. }
  55. int uni(int i,int j)
  56. {
  57.     if(i!=j)
  58.     {
  59.         parent[j]=i;
  60.         return 1;
  61.     }
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment