| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 
 | #include<stdio.h>
 #define N 6
 #define MAX 10000
 typedef struct
 {
 int startvex,endvex;
 int length;
 }edge;
 
 int flag[N]={0};
 int flag1=0;
 int flag2=0;
 
 
 void Prime(int  i,int dist[N][N],edge T[N-1])
 {
 int j,k,min;
 int num=0;
 flag[i]=1;
 while(num<5)
 {
 min=MAX;
 for(j=0;j<N;j++)
 {
 if(flag[j]==1)
 for(k=0;k<N;k++)
 {
 if(dist[j][k]<min)
 {
 min=dist[j][k];
 flag1=k;
 flag2=j;
 }
 }
 }
 
 if(flag[flag1]!=1)
 {
 T[num].startvex=flag2;
 T[num].endvex=flag1;
 T[num].length=dist[flag2][flag1];
 num++;
 flag[flag1]=1;
 }
 dist[flag2][flag1]=MAX;
 }
 for(int i=0;i<N-1;i++)
 printf("start=%d,end=%d,length=%d\n",T[i].startvex,T[i].endvex,T[i].length);
 }
 
 
 void main()
 {
 int dist[N][N]={{MAX,10,MAX,MAX,19,21},
 {10,MAX,5,6,MAX,11},
 {MAX,5,MAX,6,MAX,MAX},
 {MAX,6,6,MAX,18,14},
 {19,MAX,MAX,18,MAX,33},
 {21,11,MAX,14,33,MAX}};
 edge T[N-1];
 Prime(1,dist,T);
 }
 
 |