#include<iostream>
using namespace std;//记住,最小生成树是针对无向图的。
#define n 200
int visit[n]={0},dis[n]={0};//visit判断其是否已经加入生成树 dis则表示当前某点与已经加入生成树中点的最小距离
void prim;
{
count = 1;
visit[0] = 1;
for(i = 0; i <n; ++i)
dis[i] = edge[0][i];
while(count < n)
{
lowest = Max;//所能定义的最大值.
for(i = 0; i < n; ++i)
if(!visit[i] && (lowest > dis[i]))
{
w = i;
lowest = dis[i];
}
visit[w] = 1;
for(i = 0; i < n; ++i)
if(!visit[i]&&(dis[i] > edge[w][i]))//在每次找出最小的后都对所有未加入生成树的结点的最短距离进行更新。
dis[i] = edge[w][i];
++count;
}
}prim算法
最新推荐文章于 2025-11-04 16:47:30 发布
本文介绍了一种使用Prim算法求解最小生成树的方法。通过初始化visit数组来标记已加入生成树的顶点,并利用dis数组记录每个顶点到已加入生成树顶点集合的最短距离。算法迭代过程中不断寻找未加入生成树顶点集合中距离最近的顶点并将其加入生成树,同时更新各顶点的最短距离。
1万+

被折叠的 条评论
为什么被折叠?



