/*图的遍历*/
#include<stdio.h>
void prim(int matrix[][10],int n ,int tree[])
{
int i,j,k,m,temp;
int visited[10]={0};
for(i=0;i<n;i++)
tree[i]=-1;
tree[0]=0; j=0; visited[0]=1;
while(tree[n-1]<0)
{
temp=0x7fff;
for(j=0;j<n&&!(tree[j]<0);j++)
{
for(i=0;i<n;i++)
if(matrix[tree[j]][i]>0&&matrix[tree[j]][i]<temp && !visited[i]) {temp=matrix[tree[j]][i]; m=tree[j]; k=i; }
}
tree[j]=k;
visited[k]=1;
printf("%d -- %d == %d \n",m+1,k+1,temp);
}
}
void main()
{
int matrix[7][10]={{0,50,60,0,0,0,0},
{50,0,0,65,40,0,0},
{60,0,0,52,0,0,45},
{0,65,52,0,50,30,42},
{0,40,0,50,0,50,0},
{0,0,0,30,50,0,0},
{0,0,45,42,0,0,0},
};
int tree[7]={0};
prim(matrix,7 ,tree);
}