求最小生成树的prime算法

原创 2018年04月15日 21:21:58

#include<iostream>
#include <stdio.h>
#include <memory.h>
#include <queue>
using namespace std;
const int IN = 1000000 ;
int G[105][105];
int path[105][105];
int M,N;
int locost[105];
int parent[105];
int FindMin();
int cost;
void Prime()
{
    for(int i=1; i<=N; i++)
    {
        locost[i] = G[1][i];
        parent[i] = 1;
    }
    locost[1] = 0;
    parent[1] = -1;
    for(int i=1; i<N; i++)
    {
        int k = FindMin();
        if(k)
        {
            cost+=locost[k];
            locost[k] = 0;//把k归入最小生成树
            for(int j=1; j<=N; j++)
            {
                if(locost[j] && G[k][j]<=locost[j])//调整距离
                {
                    locost[j] = G[k][j];
                    parent[j] = k;
                }
            }
        }
        else
            cout<<"error"<<endl;
    }
}
int FindMin()
{
    int Min = IN,k=0;
    for(int i=1; i<=N; i++)
        if(locost[i]&&locost[i]<Min)
        {
            Min = locost[i];
            k=i;
        }
    return k;
}
int main()
{
    cin >> M >>N;
    for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
            G[i][j] = IN;
    while(M--)
    {
        int s,d,l;
        cin >> s >> d >> l;
        G[s][d] = l;
        G[d][s] = l;
    }
    cost = 0;
    Prime();
    cout<<cost<<endl;
    return 0;
}

原理是每次把权重最小的边归入最小生成树,然后调整距离。

最小生成树之prime算法实现

prime算法的精髓在于: 每次选取一条边。 该边满足:1、一端已选,一端未选;2、该边权值最小。 直到选取n-1条边或选取n个顶点算法结束,求出MST或者判断出不存在MST。   代码设计...
  • Lulipeng_cpp
  • Lulipeng_cpp
  • 2012-07-30 10:10:24
  • 6705

最小生成树 Prime算法 简单题

相比于Kruskal算法,Prime算法是以顶点
  • u011699990
  • u011699990
  • 2014-09-23 18:15:15
  • 1603

最小生成树prime算法

  • 2013年06月18日 16:21
  • 4KB
  • 下载

【算法导论】最小生成树之Prime法

关于最小生成树的概念,在前一篇文章中已经讲到,就不在赘述了。下面介绍Prime算法: 其基本思想为:从一个顶点出发,选择由该顶点出发的最小权值边,并将该边的另一个顶点包含进来,然后找出由这两个顶点出发...
  • tengweitw
  • tengweitw
  • 2013-12-19 19:45:45
  • 1812

最小生成树-prime算法

Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈...
  • lqcsp
  • lqcsp
  • 2013-11-04 08:43:55
  • 3784

数据结构_图_最小生成树算法之prime算法

长假最后一天,前六天时间基本上什么都没做,今天起了个大早决定在自习室度过,把“未竟的事业”完成,哈哈。。。数据结构进展奇慢,算法真的好难学,理解一个算法的实现过程还比较容易,真正把它写成代码可没那么容...
  • Jack_Wong2010
  • Jack_Wong2010
  • 2011-10-07 15:48:38
  • 2036

最小生成树的Prime算法的思想

普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory))...
  • dreamzuora
  • dreamzuora
  • 2016-05-08 16:13:21
  • 1299

最小生成树 Prime算法

问题背景: 对于一个图,它的所有生成树中必有一个“边的权值最小”的生成树,我们把它称为最小生成树。 概念很抽象,换做实际问题: 有十个城市,各个城市之间距离或远或近。需要建设一个道路网,把十个城...
  • hyhyl1990
  • hyhyl1990
  • 2015-08-10 09:22:51
  • 1645

最小生成树(prime 算法和克鲁斯卡尔算法)

最小生成树-Prim算法和Kruskal算法  分别适用于不同类型的图结构:prime算法适合于边多而定点少的,库鲁萨卡尔算法适合于边少定点多的情况。 Prim算法 1.概览 普里姆算...
  • zwz2011303359
  • zwz2011303359
  • 2017-03-18 15:08:27
  • 2571

最小生成树--Prime算法

最小生成树:n个顶点网络的生成树有n个结点,n-1条分枝。假设网络中有m条边(m≥n-1),用MST表示许多可能的生成树的集合,每棵树中n-1条分枝上的权之和用WG(T)表示,则使得WG(Tmin)=...
  • leihengxin
  • leihengxin
  • 2014-12-29 13:23:24
  • 6113
收藏助手
不良信息举报
您举报文章:求最小生成树的prime算法
举报原因:
原因补充:

(最多只允许输入30个字)