GREEDY METHOD


MINIMUM SPANNING TREE USING GREEDY METHOD


#include<iostream.h>
#include<conio.h>
#define inf 99
int a[10][10],n,c=1,k=0,pr[10];
prim1();
prim(int a);
struct node
{
int p,d,v;
}s[10];
void main()
{
int i,j,d,d1,s2=65;
char x[26];
clrscr();
for(i=1;i<=26;i++)
x[i]=s2++;
cout<<"Enter the Number of nodes:";
cin>>n;
cout<<"Enter the adjacency weight matrix:\n";
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
cout<<"\nThe Weight matrix:\n";
for(i=1;i<=n;i++)
cout<<" "<<x[i];
for(i=1;i<=n;i++)
{
cout<<"\n"<<" "<<x[i];
for(j=1;j<=n;j++)
cout<<" "<<a[i][j];
cout<<"\n";
}
for(i=1;i<=n;i++)
{
s[i].d=inf;
s[i].v=0;
s[i].p=0;
}
pr[++k]=1;
s[1].v=1;
prim1();
cout<<"Minimum Spanning Tree:\n";
cout<<"From to Distance\n";
for(i=1;i<k;i++)
{
d=pr[i];
d1=s[d].p;

cout<<"\n"<<x[d1]<<" "<<x[d]<<" "<<s[d].d;
}
getch();
}
prim1()
{
int i,j,y,z,min;
y=c;
for(i=1;i<=y;i++)
prim(pr[i]);
min=s[1].d;
for(j=1;j<=n;j++)
{
if(s[j].v!=1&&s[j].d!=inf)
{
if(s[j].d<min)
{
min=s[j].d;
z=j;
}
}
}
pr[k++]=z;
c++;
s[z].v=1;
if(c<n)
prim1();
return(0);
}
prim(int b)
{
int i=b,j;
for(j=1;j<=n;j++)
{
if(a[i][j]!=0&&s[j].v!=1)
{
if(a[i][j]<s[j].d)
{
s[j].p=0;
s[j].d=a[i][j];
s[j].p=i;
}
}
}
return (0);
}





OUTPUT:
           

        MINIMUM SPANNING TREE

Enter the Number of nodes: 3

Enter the adjacency weight matrix:
1  2  3
4  5  6
7  8  9

The Weight matrix:

     A B C
 A 1  2  3

 B 4  5  6

 C 7  8  9

Minimum Spanning Tree:
From to Distance                     

A   B   2

A   C   3

 






Comments

Popular posts from this blog

TRAVELING SALESMAN USING BRANCH AND BOUND TECHNIQUE

BOOKS DETAILS USING C STRUCTURE

TRAVELING SALESMAN USING BRANCH AND BOUND TECHNIQUE