#include<stdio.h>
#define n 6
typedef struct{
int fromvex,endvex;
float length;
}edge;
edge T[n-1];
float dist[n][n]=
{
{10000,10,10000,10000,19,21},
{10,10000,5,6,10000,11},
{10000,5,10000,6,10000,10000},
{10000,6,6,10000,18,14},
{19,10000,10000,18,10000,33},
{21,11,10000,14,33,10000}
};
void Prim(int i){
int j,k,m,v;
float min,max=10000;
float d ;
edge e;
v=i;
for(j=0;j<=n-2;++j){
T[j].fromvex=v;
if(j>=v){
T[j].endvex = j+1;
T[j].length=dist[v][j+1];
}
else{
T[j].endvex=j;
T[j].length=dist[v][j];
}
}
for(k=0;k<n-1;++k){
min=max;
for(j=k;j<n-1;++j)
if(T[j].length<min){
min=T[j].length;
m=j;
}
e=T[m];
T[m]=T[k];
T[k]=e;
v=T[k].endvex;
for(j=k+1;j<n-1;++j){
d=dist[v][T[j].endvex];
if(d<T[j].length){
T[j].length=d;
T[j].fromvex=v;
}
}
}
}
int main(){
int i;
Prim(2);
for(i=0;i<n-1;++i){
printf("%d--%.0f-->%d/n",T[i].fromvex,T[i].length,T[i].endvex);
}
}