Kurskal

细节

O(E*logE)(sort)
对边权排序,每次选一条最小的边

模板

INPUT
/*
5 7
1 2 2
1 3 5
1 4 2
2 3 3
3 4 1
2 5 4
3 5 6
*/

// 最小生成树: Kurskal算法+边集存储+并查集(优化)
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 101;
struct Edge{int u, v, w;
} E[maxn]; // 遍集数组存储
int Parent[maxn]; // 并查集void Build(int n) {for(int i = 1; i <= n; i++) Parent[i] = i;
}int Find(int x) { // 查找根节点并压缩路径 if(Parent[x] != x) Parent[x] = Find(Parent[x]);return Parent[x];
} void Union(int x, int y) {Parent[Find(y)] = Find(x);
}bool cmp(const Edge &a, const Edge &b) {return a.w < b.w;
}int main() {freopen("test.in", "r", stdin);int k = 0, MST = 0;int n, m, u, v, val;scanf("%d%d", &n, &m);for(int i = 1; i <= m; i++) {scanf("%d%d%d", &u, &v, &val);E[i].u = u;E[i].v = v;E[i].w = val;} // 存边Build(n); // 初始化并查集 sort(E+1, E+n+1, cmp);for(int i = 1; i <= m; i++) { // 遍历所有边,每次取最小 if(Find(E[i].u) != Find(E[i].v)) {Union(E[i].u, E[i].v);MST += E[i].w; // 边权累加 k++; // 计数器 }if(k == n-1) break;} printf("\n MST=%d\n", MST);return 0;
}

最小生成树(Kruskal )相关推荐

  1. hdu 1863(最小生成树kruskal)

    /*Name: hdu1863畅通工程 Author: Try86Date: 10/04/12 12:43Description: 最小生成树(kruskal) */ #include <cst ...

  2. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  3. hdu 1162(最小生成树kruskal)

    /*Name: 最小生成树(kruskal) Author: Date: 10/04/12 19:17 */#include <math.h> #include <cstdio> ...

  4. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  5. 【老生谈算法】matlab实现Kruskal避圈算法求最小生成树——Kruskal避圈算法

    基于MATLAB的Kruskal避圈算法求最小生成树 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于MATLAB的Kruskal避 ...

  6. 最小生成树kruskal算法

    最小生成树kruskal算法 概述 算法分析 代码 概述 克鲁斯卡尔(Kruskal)(Kruskal)(Kruskal)算法是求连通网的最小生成树的另一种方法.与普里姆(Prim)(Prim)(Pr ...

  7. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  8. Contest Hunter CH6201 走廊泼水节 最小生成树 Kruskal

    $ \rightarrow $ 戳我进CH原题 走廊泼水节 0x60「图论」例题 总时限10 s $ \quad $ 总内存256 MiB 描述 [简化版题意]给定一棵N个节点的树,要求增加若干条边, ...

  9. 最小生成树kruskal算法并查集版 C语言实现

    今天数据结构课讲了最小生成树的Kruskal算法和Prim算法,不过都只是概念,可能是怕他们听不懂吧,反正算法实现一概不讲...囧 下午抱着<算法导论>跑去图书馆看Kruskal算法,发现 ...

  10. 图论(九)最小生成树-Kruskal算法

    前面说过,Kruskal是从最短边着手构建最小生成树的.其基本过程是:先对图中的所有边按照权重值从小到大进行排序,然后着手选取边构建最小生成树.如果直接从小到大按顺序选取,有可能形成了环,所以对环的处 ...

最新文章

  1. 我的csdnmark
  2. css高级教程第一章笔记
  3. [NOI2014]动物园 【kmp】
  4. char、Varchar、nvarchar、ntext (转)
  5. 最新综述:作为体现具体化自然语言环境的文本世界
  6. 建立最简单的repo服务器实例讲解
  7. 前端学习(1351)模板引擎
  8. vs2008制作dll笔记
  9. NLP人机对话与落地案例分享
  10. 立即释放.net下的com组件
  11. Python数据结构与算法(3.3)——队列
  12. vivo手机进入9008模式(vivo x7测试)
  13. keras-yolo3-master使用记录
  14. 【第2篇】人工智能(AI)语音测试原理和实践
  15. PPT - 双屏幕情况下,如何设置 PPT 不在主屏幕显示问题?
  16. 换个角度来看看C++中的左值、右值、左值引用、右值引用
  17. TCR历史论文多久能发表?
  18. Python实现ATM
  19. java如何进行内存自动释放、垃圾回收?
  20. 重磅!道翰天琼解密认知智能核心秘密三大核心技术,机器人大脑API平台。

热门文章

  1. 监控利器Zabbix之主动模式和被动模式
  2. 简单几行程序轻松分析Excel
  3. SQL Server 文件和文件组
  4. 关于Mysql5.6半同步主从复制的开启方法【转】
  5. TI PDK3.0 qt 交叉编译环境设置
  6. Django中的Form
  7. zeptojs-跑马灯效果
  8. LC124 Binary Tree Maximum Path Sum
  9. RequireJS示例
  10. 偶然发现的QQ的一个挺讨厌的BUG