#include<stdio.h>
int cost[ 10 ] [ 10 ] , n;
void prim( )
{
int vt[ 10 ] = { 0 } ;
int a= 0 , b= 0 , min, mincost = 0 , ne = 0 ;
//start from the first vertex
vt[ 0 ] = 1 ;
while ( ne < n- 1 )
{
//Find the nearest neighbour
min = 999 ;
for ( int i = 0 ; i< n; i++ )
{
if ( vt[ i] == 1 )
for ( int j = 0 ; j < n; j++ )
if ( cost[ i] [ j] < min && vt[ j] == 0 )
{
min = cost[ i] [ j] ;
a = i;
b = j;
}
}
//Include nearest neighbour 'b' into MST
printf ( "Edge from vertex %d to vertex %d and the cost %d\n " , a
, b
, min
) ; vt[ b] = 1 ;
ne++;
mincost += min;
cost[ a] [ b] = cost[ b] [ a] = 999 ;
}
printf ( "minimum spanning tree cost is %d" , mincost
) ; }
int main( )
{
printf ( "Enter the no. of vertices: " ) ; printf ( "Enter the cost matrix\n " ) ; for ( int i= 0 ; i< n; i++ )
for ( int j= 0 ; j< n; j++ )
prim( ) ;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IGNvc3RbMTBdWzEwXSxuOwp2b2lkIHByaW0oKQp7CmludCB2dFsxMF09ezB9OwppbnQgYT0wLGI9MCxtaW4sIG1pbmNvc3QgPSAwLCBuZSA9IDA7Ci8vc3RhcnQgZnJvbSB0aGUgZmlyc3QgdmVydGV4CnZ0WzBdID0gMTsKd2hpbGUobmUgPCBuLTEpCnsKLy9GaW5kIHRoZSBuZWFyZXN0IG5laWdoYm91cgptaW4gPSA5OTk7CmZvciAoaW50IGkgPSAwOyBpPG47IGkrKykKewppZih2dFtpXT09MSkKZm9yKGludCBqID0gMDtqIDxuOyBqKyspCmlmKGNvc3RbaV1bal0gPCBtaW4gJiYgdnRbal09PTApCnsKbWluID0gY29zdFtpXVtqXTsKYSA9IGk7CmIgPSBqOwp9Cn0KLy9JbmNsdWRlIG5lYXJlc3QgbmVpZ2hib3VyICdiJyBpbnRvIE1TVApwcmludGYoIkVkZ2UgZnJvbSB2ZXJ0ZXggJWQgdG8gdmVydGV4ICVkIGFuZCB0aGUgY29zdCAlZFxuIixhLGIsbWluKTsKdnRbYl0gPSAxOwpuZSsrOwptaW5jb3N0ICs9IG1pbjsKY29zdFthXVtiXSA9IGNvc3RbYl1bYV0gPSA5OTk7Cn0KcHJpbnRmKCJtaW5pbXVtIHNwYW5uaW5nIHRyZWUgY29zdCBpcyAlZCIsbWluY29zdCk7Cn0KCgppbnQgbWFpbigpCnsKcHJpbnRmKCJFbnRlciB0aGUgbm8uIG9mIHZlcnRpY2VzOiAiKTsKc2NhbmYoIiVkIiwmbik7CnByaW50ZigiRW50ZXIgdGhlIGNvc3QgbWF0cml4XG4iKTsKZm9yKGludCBpPTA7aTxuO2krKykKZm9yKGludCBqPTA7ajxuO2orKykKc2NhbmYoIiVkIiwmY29zdFtpXVtqXSk7CnByaW0oKTsKfQ==