⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prim.cpp

📁 C++的电子教程
💻 CPP
字号:
//程序实例8_4
//Prim算法求最小生成树
#include<stdio.h>
#define I 9999
#define Max 100

void prim(int cost[][7],int n,int v)  //cost[][7]
{
	int lowcost[Max],min;
	int closest[Max],i,j,k;
	for(i=1;i<=n;i++)   //先将顶点v放入U中
	{	lowcost[i]=cost[v-1][i-1];	closest[i]=v;	}
	for(i=1;i<n;i++)  //在V-U中找出离v最近的顶点,进行n-1次
	{	min=I;
		for(j=1;j<=n;j++)
			if((lowcost[j]!=0) && (lowcost[j]<min))
			{	min=lowcost[j];	k=j;		}
		printf("E:(%d,%d),W:%d\n",closest[k],k,min);
		lowcost[k]=0;     //标记k已加入U
		for(j=1;j<=n;j++)   //修改数组lowcost和closest
			if((cost[k-1][j-1]!=0) && (cost[k-1][j-1]<lowcost[j]))
			{	
				lowcost[j]=cost[k-1][j-1];
				closest[j]=k;
			}
	}
}
//主函数
void main()
{	
	int cost[][7]={{0,5,2,20,I,15,I},	{5,0,I,3,8,I,6},
					{2,I,0,I,I,25,I},	{20,3,I,0,I,14,16},
					{I,8,I,I,0,I,12},	{15,I,25,14,I,0,10},
					{I,6,I,16,12,10,0}};
	prim(cost,7,1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -