Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- int i,j,k,a,b,u,v,n,ne=1;
- int min,mincost=0,cost[10][10],parent[10];
- int find(int);
- int uni(int,int);
- int main()
- {
- printf("Enter the no of vertices:");
- scanf("%d",&n);
- printf("Enter adjacency matrix:\n");
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=n;j++)
- {
- scanf("%d",&cost[i][j]);
- if(cost[i][j]==0)
- cost[i][j]=999;
- }
- }
- printf("The edges\n");
- while(ne < n)
- {
- for(i=1,min=999;i<=n;i++)
- {
- for(j=1;j <= n;j++)
- {
- if(cost[i][j] < min)
- {
- min=cost[i][j];
- a=u=i;
- b=v=j;
- }
- }
- }
- u=find(u);
- v=find(v);
- if(uni(u,v))
- {
- printf("%d edge (%d,%d) =%d\n",ne++,a,b,min);
- mincost +=min;
- }
- cost[a][b]=cost[b][a]=999;
- }
- printf("\nMinimum cost = %d\n",mincost);
- //getch();
- }
- int find(int i)
- {
- while(parent[i]){
- i=parent[i];
- printf("%d\n",i);
- }
- return i;
- }
- int uni(int i,int j)
- {
- if(i!=j)
- {
- parent[j]=i;
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment