JustPaste.it

Program 1

 

#include<stdio.h>
int find(int i);
void uni (int i,int j);
int parent[10]={0};
void main()
{
    int i,j,n,cost[20][20],a,b,u,v,min,mincost=0,ne=1;
    printf("Enter the number of nodes:");
    scanf("%d",&n);
    printf("Enter the cost of 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 of minimum cost spanning tree are\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(u!=v)
        {
            uni(u,v);
            printf("%d Edge (%d,%d)=%d\n",ne++,a,b,min);
            mincost=mincost+min;
        }
        cost[a][b]=cost[b][a]=999;
    }
    printf("minimum cost : %d \n",mincost);
}
int find(int i)
{
    while(parent[i])
        i=parent[i];
    return i;
}
void uni(int i, int j)
{
    parent[j]=i;
}

____________________________________________________________________________________________________

 

Program 2

 

#include<stdio.h> 
void main() 
{  
    int i,j,n,cost[20][20],u,v,min,mincost=0,visited[10],ne=1;
      printf("Enter the number of nodes:");
        scanf("%d",&n);
          printf("Enter the cost 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;
                }  
        }      
    for(i=1;i<=n;i++)      
      visited[i]=0;  
    printf("\n the edges considered for MST are \n");      
    visited[1]=1;  
    while(ne<n)  
    {   
          for(i=1,min=999;i<=n;i++)    
              for(j=1;j<=n;j++)     
                  if(cost[i][j]<min)     
                  {      
                      if(visited[i]==0)          
                          continue; 
                      else                          
                      {       
                          min=cost[i][j];       
                        u=i;        
                        v=j;          
                    }     
                }   
                if(visited[u]==0||visited[v]==0)   
                {    
                    printf("%d Edge (%d,%d)=%d\n",ne++,u,v,min);    
                    mincost=mincost+min;    
                    visited[v]=1;   
                }   
                cost[u][v]=cost[v][u]=999;  
    }  
    printf("\n Minimum cost=%d\n",mincost);  
}