Kruskal算法的过程:
要套并查集

(1) 将全部边按照权值由小到大排序。
(2) 按顺序(边权由小到大的顺序)考虑每条边,只要这条边和我们已经选择的边不构成圈,就保留这条边,否则放弃这条边。

算法 成功选择(n-1)条边后,形成一棵最小生成树,当然如果算法无法选择出(n-1)条边,则说明原图不连通。

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 100010, M = 300010, INF = 0x3f3f3f3f;
int n, m;
int p[N];
struct Edge
{
    int a, b;
    long long w;
    bool operator<(const Edge& W) {
        return w < W.w;
    }
    
}edges[M];

int find(int x)
{
    if (p[x] == x) return x;
    else
        return p[x] = find(p[x]);
}
void merge(int a, int b) {
    int x = find(a);
    int y = find(b);
    if (x != y)
        p[x] = y;
}
long long kruskal()
{
    sort(edges, edges + m);

long long res = 0;
    int cnt = 0;

for (int i = 0; i < m; i++)
    {
        int a = edges[i].a, b = edges[i].b;
        long long w = edges[i].w;
        a = find(a), b = find(b);

if (a != b)
        {
            merge(a, b);
            res += w;
            cnt++;//链接了的数
        }
    }
    if (cnt < n - 1) return -1;

return res;

}

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++) p[i] = i;
    for (int i = 0; i < m; i++)
    {
        int a, b;
        long long w;
        cin >> a >> b >> w;
        edges[i] = { a,b,w };
    }

cout << kruskal();
    return 0;
}

求第k边

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 100010, M = 300010, INF = 0x3f3f3f3f;
int n, m, cnt;
int p[N], x[N], y[N];
double ans[N];
struct Edge
{int a, b;double w;bool operator<(const Edge& W) {return w < W.w;}}e[M];
double dis(int a, int b) {return sqrt((x[a] - x[b]) * (x[a] - x[b]) + (y[a] - y[b]) * (y[a] - y[b]));
}
int find(int x)
{if (p[x] == x) return x;elsereturn p[x] = find(p[x]);
}
void merge(int a, int b) {int x = find(a);int y = find(b);if (x != y)p[x] = y;
}
void kruskal()
{int tot = 0;for (int i = 1; i <= n; i++) {for (int j = 1 + i; j <= n; j++) {e[++tot].a = i;e[tot].b = j;e[tot].w = dis(i, j);}}sort(e + 1, e + 1 + tot);for (int i = 1; i <= tot; i++) {if (find(e[i].a) != find(e[i].b)) {merge(e[i].a, e[i].b);ans[++cnt] = e[i].w;}if (cnt == n) break;}printf("%.2lf", ans[cnt - m + 1]);}int main()
{cin >> n >> m;for (int i = 1; i <= n; i++) p[i] = i;for (int i = 1; i <= m; i++){int a, b;cin >> a >> b;x[i] = a, y[i] = b;}kruskal();return 0;
}

krusal算法无解析(周灵猪)相关推荐

  1. 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)

    第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...

  2. adaboost算法java_Adaboost 算法实例解析

    Adaboost 算法实例解析 1 Adaboost的原理 1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 ...

  3. 【算法大赛直播周】如何让人人都可以使用AI技术?北大崔斌教授亲解自动化机器学习

    2020腾讯广告算法大赛已于近日落下帷幕(点击回顾),但算法研习之路永无止境.为了更好地推动前沿技术的分享和交流,持续助力产学研融合落地,腾讯广告特邀三位大赛顶级评委开启"2020腾讯广告算 ...

  4. 【算法大赛直播周】隐私保护与精准营销亦能兼得,“联邦广告”如何打破数据孤岛?

    2020腾讯广告算法大赛已于昨天落下帷幕(点击回顾),但算法研习之路永无止境.为了更好地推动前沿技术的分享和交流,持续助力产学研融合落地,腾讯广告特邀三位大赛顶级评委开启"2020腾讯广告算 ...

  5. 工业级静默活体检测开源算法技术解析记录

    工业级静默活体检测开源算法技术解析(小视科技分享) 视频链接: https://www.bilibili.com/video/BV1qZ4y1T7CH 相关背景 定义:无感鉴别镜头前人脸的真伪,人脸识 ...

  6. java语言麻将游戏代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家. 麻将是一种大家最喜 ...

  7. 麻将游戏算法深入解析

    以此文奠我那些年中无意删除而删除的代码工程,另:本工作室承接棋牌算法研发合作业务,有兴趣可联系本QQ:285421210或微信honghaier_game 欢迎加入红孩儿[麻将研发]群: 605024 ...

  8. C++麻将游戏算法深入解析

    C++麻将游戏算法深入解析 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家. 麻将是一种大家最喜爱的 ...

  9. 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家. 麻将是一种大家最喜 ...

最新文章

  1. 为什么ajax请求状态码为0,ajax请求状态码为0的解决办法
  2. 【重磅上线】思维导图工具XMind:ZEN基础问题详解合集
  3. CMD中使用attrib命令设置文件只读、隐藏属性详解
  4. AutoEncoder、RBM、DBM、DBN
  5. 微信小程序预览pdf功能实现
  6. Cryengine 3新的全局光照算法简介
  7. ROBOTS.TXT在SEO优化中的运用(ROBOTS.TXT SEO优化实战)
  8. 微信小程序官方demo下载地址
  9. c语言实验报告1.4.3,c语言实验报告实验三.doc
  10. 用c语言输出一个菱形
  11. EMC、EMI、ESD、EMS区别 最清晰的解释送给你
  12. HTML文本框边框宽度,如何设置文本框尺寸 word文本框怎么设置统一大小
  13. Windows网络共享方式
  14. 2023中国余热回收利用展览会盛装亮相北京
  15. JS最佳实践——红皮书
  16. 【3DFR Python】convertDepth2Normal:从深度图计算法向图
  17. arm 中的nor flash 和 nand flash
  18. 电影中牛掰的黑客技术,看这篇文章你就够了!
  19. 分布式计算的基本原理
  20. 通过插入脚注的方式引用参考文献。

热门文章

  1. 科创板是2019年最大的财富机遇(一)
  2. 《深度学习》学习笔记三——数值计算
  3. 给大家推荐的著名IT网站
  4. 强烈推荐IBM网站的linux文档库
  5. 奇思妙想之关于淘宝购衣
  6. Unity材质清理器
  7. 笔记本虚拟无线热点给手机使用
  8. word2007插入页码里面不显示或没选项可点怎么办?
  9. 海思Hi3719CV100芯片怎么样?Hi3719处理器参数详细说明
  10. mysql下如何执行sql脚本