当前位置: 首页 > news >正文

【C++学习第19天】最小生成树(对应无向图)

一、最小生成树

二、代码

1、Prim算法

#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int N = 510, INF = 0x3f3f3f3f;int n, m;
int g[N][N];
int dist[N];
bool st[N];int prim()
{memset(dist, 0x3f, sizeof dist);int res = 0;for(int i = 0; i < n; i++){int t = -1;for(int j = 1; j <= n; j++)if(!st[j] && (t == -1 || dist[t] > dist[j]))t = j;if(i && dist[t] == INF)return INF;if(i)res += dist[t];for(int j = 1; j <= n; j++)dist[j] = min(dist[j], g[t][j]);st[t] = true;}return res;
}int main()
{scanf("%d%d", &n, &m);memset(g, 0x3f, sizeof g);while(m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);g[a][b] = g[b][a] = min(g[a][b], c);}int t = prim();if(t == INF)puts("impossible");elseprintf("%d\n", t);return 0;
}

2、Kruskal算法

#include <iostream>
#include <algorithm>using namespace std;const int N = 200010;int n, m;
int p[N];struct Edge
{int a, b, w;bool operator< (const Edge &W) const{return w < W.w;}
}edges[N];int find(int x)
{if(p[x] != x)p[x] = find(p[x]);return p[x];
}int main()
{scanf("%d%d", &n, &m);for(int i = 0; i < m; i++){int a, b, w;scanf("%d%d%d", &a, &b, &w);edges[i] = {a, b, w};}sort(edges, edges + m);for(int i = 1; i <= n; i++)p[i] = i;int res = 0, cnt = 0;for(int i = 0; i < m; i++){int a = edges[i].a, b = edges[i].b, w = edges[i].w;a = find(a), b = find(b);if(a != b){p[a] = b;res += w;cnt++;}}if(cnt < n - 1)puts("impossible");elseprintf("%d\n", res);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据分析_01_Python基础
  • 【C++】一堆数组案例 元素逆置
  • 自定义线程池(二)
  • 【带你入门生信】什么是生物信息学
  • [Linux安全运维] Nginx安装部署以及LNMP框架搭建保姆级教程
  • 基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)
  • C语言--函数
  • 【dijkstra】迪杰斯特拉算法 洛谷 P1828例题代码讲解
  • C++与云计算的融合:构建高效、可扩展的云服务
  • 逻辑推理之lora微调
  • 2024/8/3 英语每日一段
  • 数据结构与算法 - 堆
  • Halcon 模型变化
  • 题解题解题解题解
  • 《古代希腊赛会研究:能揭开古希腊赛会的神秘面纱吗?》
  • [case10]使用RSQL实现端到端的动态查询
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • ERLANG 网工修炼笔记 ---- UDP
  • github指令
  • JDK 6和JDK 7中的substring()方法
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Sass 快速入门教程
  • yii2中session跨域名的问题
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 缓存与缓冲
  • 技术发展面试
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 学习使用ExpressJS 4.0中的新Router
  • 用Canvas画一棵二叉树
  • 原生 js 实现移动端 Touch 滑动反弹
  • 最近的计划
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • #图像处理
  • (007)XHTML文档之标题——h1~h6
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (补充)IDEA项目结构
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (十七)Flink 容错机制
  • (一)kafka实战——kafka源码编译启动
  • (一)Thymeleaf用法——Thymeleaf简介
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .gitignore文件_Git:.gitignore
  • .gitignore文件忽略的内容不生效问题解决
  • .htaccess配置常用技巧
  • .NET 8 跨平台高性能边缘采集网关
  • .net CHARTING图表控件下载地址
  • .NET Core Web APi类库如何内嵌运行?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...