如图就是Kuskal算法
将图中的每条边按照权值从小到大排序,每次加起来就行,注意的是不要形成回路;
重点是如何用代码实现不能形成回路
看代码;
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#define MaxSize 100
using namespace std;
int tu[MaxSize][MaxSize];
struct Edge//储存边的两个顶点以及边的权值
{
    int begin1;
    int end1;
    int weight;
};
bool comp(Edge a,Edge b)
{
    return a.weight<b.weight;
}
void Kruskal(int n)
{
    int vest[MaxSize];
    Edge E[MaxSize];
    int k=0;
    for(int i=1;i<=n;i++)
  for(int j=1;j<=n;j++)
        if(tu[i][j]!=0)
    {
        E[k].begin1=i;//将这条边的一个顶点储存
        E[k].end1=j;//将这条边的另一个顶点储存
        E[k].weight=tu[i][j];//将边的权值储存
        k++;//边的个数
    }
    sort(E,E+k,comp);//按照边的权值从大到小排序
    for(int i=0;i<=n;i++)
        vest[i]=i;//重点:将每个顶点初始化,看作是各不相同的集合
    k=1;
    int j=1,u1,v1,sn1,sn2;
    int sum=0;
    while(k<n)
    {
        u1=E[j].begin1;
        v1=E[j].end1;
        sn1=vest[u1];
        sn2=vest[v1];//此条边的两个点
        if( sn1!=sn2)//两个点不属于一个集合
        {
 
            k++;
           sum+=E[j].weight;
            printf("< %d  ,  %d >:   %d      sum=%d\n", u1-1,v1-1,E[j].weight,sum);
           for(int i=1;i<=n;i++)
                if(vest[i]==sn2)
                vest[i]=sn1;//将找过的边的顶点都赋予相同的值,代表在一个集合内,此段代码将所有连在一起的顶点都标志成一个相同的值即                           vest[顶点编号]都是相同的;
        }
        j++;//遍历下一条边
    }
}
int  main()
{
    int n;
    scanf("%d",&n);
for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    scanf("%d",&tu[i][j]);
    Kruskal(n);
 
    return 0;
}
/*
6
0 6 1 5 9999 9999
6 0 5 9999 3 9999
1 5 0 5 6 4
5 9999 5 0 9999 2
9999 3 6 9999 0 6
9999 9999 4 2 6 0
 
 
*/
 
 
 
 
 
 
 
 
 
 
 
 

最小生成树问题(Kruskal 算法)(克鲁斯卡尔)的更多相关文章

  1. [模板] Kruskal算法 && 克鲁斯卡尔重构树

    克鲁斯卡尔重构树 发现没把板子放上来... 现在放一下 克鲁斯卡尔算法的正确性是利用反证法证明的. 简要地说, 就是如果不加入当前权值最小的边 \(e_1\), 那么之后加入的边和这条边会形成一个环. ...

  2. Kruskal算法 克鲁斯卡尔

    30行 #include <iostream> #include <algorithm> using namespace std; int f[5001],n,m,ans=0, ...

  3. 最小生成树——Kruskal(克鲁斯卡尔)算法

    [0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 Kruskal(克鲁斯卡尔)算法 的idea 并用 源代码加以实现: 0.2)最小生成树的基础知识,参见 ...

  4. 数据结构与算法——克鲁斯卡尔(Kruskal)算法

    目录 应用场景-公交站问题 克鲁斯卡尔算法介绍 克鲁斯卡尔算法图解 克鲁斯卡尔算法分析 如何判断回路? 代码实现 无向图构建 克鲁斯卡尔算法实现 获取一个点的终点解释 应用场景-公交站问题 某城市新增 ...

  5. 最小生成树问题---Prim算法与Kruskal算法实现(MATLAB语言实现)

    2015-12-17晚,复习,甚是无聊,阅<复杂网络算法与应用>一书,得知最小生成树问题(Minimum spanning tree)问题.记之. 何为树:连通且不含圈的图称为树. 图T= ...

  6. 最小生成树问题------------Prim算法(TjuOj_1924_Jungle Roads)

    遇到一道题,简单说就是找一个图的最小生成树,大概有两种常用的算法:Prim算法和Kruskal算法.这里先介绍Prim.随后贴出1924的算法实现代码. Prim算法 1.概览 普里姆算法(Prim算 ...

  7. 最小生成树问题---Prim算法学习

    一个具有n个节点的连通图的生成树是原图的最小连通子集,它包含了n个节点和n-1条边.若砍去任一条边,则生成树变为非连通图:若增加一条边,则在图中形成一条回路.本文所写的是一个带权的无向连通图中寻求各边 ...

  8. Prim算法和Kruskal算法介绍

    一.Prim算法 普利姆(Prim)算法适用于求解无向图中的最小生成树(Minimum Cost Spanning Tree).下面是Prim算法构造最小生成树的过程图解.              ...

  9. 最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析

    最小生成树,Prim算法与Kruskal算法,408方向,思路与实现分析 最小生成树,老生常谈了,生活中也总会有各种各样的问题,在这里,我来带你一起分析一下这个算法的思路与实现的方式吧~~ 在考研中呢 ...

  10. 最小生成树之克鲁斯卡尔(Kruskal)算法

    学习最小生成树算法之前我们先来了解下 下面这些概念: 树(Tree):如果一个无向连通图中不存在回路,则这种图称为树. 生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的 ...

随机推荐

  1. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  2. E/Trace: error opening trace file: No such file or directory

    E/Trace: error opening trace file: No such file or directory (2) 有这一个错误,想了一下,然后发现是 AdroidManifest.xm ...

  3. sql-从查询结果创建一个永久表

    语法: select x into new_tableName  from ori_tableName 例如: SELECT [site] ,[day] ,[val]/31.4 [val] into ...

  4. ashx页面 “检测到有潜在危险的 Request.Form 值”的解决方法(控制单个处理程序不检测html标签)

    如题: 使用web.config的configuration/location节点. 在configuration节点内新建一个location节点,注意这个节点和system.webserver那些 ...

  5. Adapter 模式

    在实际软件系统设计和开发中,会经常遇到这种问题:我们为了完成某项工作购买了一个第三方的库来加快开发. 这就带来了一个问题: 我们在应用程序中已经设计好了接口,与这个第三方提供的接口不一致,为了使得这些 ...

  6. MVC埰坑日记 文件权限

    public static void DownLoadFile(string FileFullPath) { if (!string.IsNullOrEmpty(FileFullPath) & ...

  7. LAMP的编译日志,

    在CentOS5.2上,编译LAMP的,两年前测试通过的,现在留印 ### 在记事本中 ,不要打开 自动换行,否则一些命令 无法正常运行###把源文件考到/src/目录下,然后进入/src////// ...

  8. 面试后 follow up letter 分享

    分享一下最近面试外企的follow up letter. Dear Mr. Xu,     Thank you again for the time you and Mr. Guo spent wit ...

  9. Silverlight开发工具汇总

    随着Silverlight技术的逐步完善,Silverlight应用大批的涌现,近期的2010年冬季奥运会,Silverlight作为首选视频播放技术,为全球提供在线赛事实况. Silverlight ...

  10. 浏览器中的WebSocket("ws://127.0.0.1:9988");

    <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" ...