You are on page 1of 5

Prims Algorithm

#include<stdio.h>
#include<conio.h>
void main()
{
int a[10][10],t[10][10],nearm[10];
int x,y,i,j,k,n,l;
int b,c,h,min,mincost;
clrscr();
printf("\n\t PRIM'S ALGORITHM");
printf("\n\t ****** *********");
printf("\n Enter the No.of Nodes:");
scanf("%d",&n);
printf("\n Enter the Cost Matrix");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
{
a[i][j] = 0;
continue;
}
printf("\n

a[%d][%d]= ",i,j);

scanf("%d",&a[i][j]);
}
}
clrscr();
printf("\t\t PRIM'S ALGORITHMS USING GREEDY METHOD\n");
printf("\t\t
=======================================\n\n");
printf("\n The Given Cost Matrix is :\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)

{
printf("%d\t",a[i][j]);
}
printf("\n");
}
min=999;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if((i==j) || (a[i][j]==min))
{
continue;
}
else
{
if(a[i][j]<min)
{
min=a[i][j];
k=i;
l=j;
}
mincost=a[k][l];
t[1][1]=k;
t[1][2]=l;
}
}
}
for(i=1;i<=n;i++)
{
if(a[i][l]<a[i][k])
{
nearm[i]=l;
}
else

{
nearm[i]=k;
nearm[k]=0;
nearm[l]=0;
}
}
for(i=2;i<=n-1;i++)
{
min=999;
for(h=1;h<=n;h++)
{
x=nearm[h];
if((nearm[h]!=0)&&(a[h][x]<min))
{
j=h;
y=nearm[j];
min=a[h][y];
}
}
t[i][1]=j;
t[i][2]=nearm[j];
mincost=mincost+a[j][y];
nearm[j]=0;
for(k=1;k<=n;k++)
{
b=nearm[k];
if((nearm[k]!=0) && (a[k][b]>a[k][j]))
nearm[k]=j;
}
}
printf("\nThe Edges of Minimum Cost Spanning Tree");
for(i=1;i<n;i++)
{

b=t[i][1];
c=t[i][2];
printf("\n <%d> to <%d> = %d",b,c,a[b][c]);
}
printf("\nMinimum Cost Spanning Tree is %d",mincost);
getch();
}

OUTPUT:
PRIM'S ALGORITHM
****** **********
Enter the No.of Nodes:4
Enter the Cost Matrix:
a[1][2]= 1
a[1][3]= 5
a[1][4]= 2
a[2][1]= 1
a[2][3]= 6
a[2][4]= 3
a[3][1]= 5
a[3][2]= 6
a[3][4]= 3
a[4][1]= 2
a[4][2]= 3
a[4][3]= 3

PRIM'S ALGORITHMS USING GREEDY METHOD


==============================
The Given Cost Matrix is :
0

The Edges of Minimum Cost Spanning Tree


<1> to <2> = 1
<4> to <1> = 2
<3> to <4> = 3
Minimum Cost Spanning Tree is 6

You might also like