首页 > 编程语言 > 详细

Prim算法

时间:2020-07-28 22:01:46      阅读:62      评论:0      收藏:0      [点我收藏+]
#include<iostream>
#define INF 100  //找一个合适的值作为最大值,表示无边
using namespace std;

int n=4; //顶点数
int G[4][4]={
{INF,1,3,5},
{1,INF,2,INF},
{3,2,INF,4},
{5,INF,4,INF}
}; //图的邻接矩阵

int Prim(int v0){
    int minCostPer[n],join[n];//minCostPer[]存的是各个顶点到已连接节点树的最小权重
    int minValue,sum;
    int v=v0;
    for(int i=0;i<n;i++){
        minCostPer[i]=G[v][i];
        join[i]=0;
    }
    join[v]=1;
    sum=0;
    for(int i=0;i<n-1;i++){
        minValue=INF;
        for(int j=0;j<n;j++){
            if(join[j]==0&&minCostPer[j]<minValue){
                minValue=minCostPer[j];
                v=j;
            }
        }
        sum=sum+minValue;
        join[v]=1;
        for(int j=0;j<n;j++){
            if(join[j]==0&&G[v][j]<minCostPer[j]){
                minCostPer[j]=G[v][j];
            }
        }
    }
    return sum;//返回最小代价值
}
int main(){
    cout<<"最小代价为:"<<Prim(0);//答案应为7
    return 0;
}

 

Prim算法

原文:https://www.cnblogs.com/zzyf/p/13392523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!