#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 7
#define infinite 1000
#define FALSE 0
#define TRUE 1
int cost[7][7]={
0 , 28 , infinite, infinite , infinite, 10, infinite,
28, 0 , 16 ,infinite, infinite, infinite , 14,
infinite, 16 , 0 , 12 , infinite , infinite ,infinite,
infinite, infinite, 12 , 0 , 22 , infinite , 18 ,
infinite, infinite, infinite ,22 , 0 , 25 , 24,
10 , infinite,infinite,infinite,25, 0 ,infinite,
infinite , 14 , infinite , 18 , 24 , infinite , 0
};
int found[MAX_SIZE]={0};
int distance[MAX_SIZE];
int num[MAX_SIZE];
int count =0;
void prim(int n);
int main(void)
{
int i;
for(i=0;i<MAX_SIZE;i++)
distance[i]=infinite;
prim(0);
return 0;
}
void prim(int n)
{
int i,min=9999,memo,current;
printf("%d ",n);
found[n] = TRUE;
for(i=0;i<7;i++)
{
if(distance[i] > cost[n][i])
{
distance[i] = cost[n][i];
}
}
for(i=0;i<7;i++)
{
if(distance[i] > 0 && distance[i] < min)
{
min = distance[i];
memo = i;
}
}
count++;
if(count<7)
{
prim(memo);
}
}