最小生成树 prim 算法

/*图的遍历*/

#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);

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值