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

最小生成树 kruskal算法

一个贪心算法,先排序,然后从小到大开始选边;
同时用并查集来维护两个点是否连通,如果当前边连接的两个点已经连通,那么说明选这条边没有任何意义,一定是劣的(因为前面已经排了序)

#include<bits/stdc++.h>
using namespace std;
const int N = 5005;
const int M = 2e5 + 5;
int n, m, f[N], ans;
struct Edge{int u, to, v;
}edge[M];
int find(int x){if(f[x] == x) return x;return f[x] = find(f[x]);
}
bool cmp(Edge a, Edge b){return a.v < b.v;
}
void kruskal(){int cnt = 0;sort(edge + 1, edge + 1 + m, cmp);for(int i = 1; i <= m; i++){int fu = find(edge[i].u);int ft = find(edge[i].to);if(fu == ft) continue;ans += edge[i].v;f[fu] = ft;cnt++;if(cnt == n-1) break;}if(cnt != n-1) ans = 0x3f3f3f3f;
}
int main(){cin >> n >> m;for(int i = 1; i <= m; i++){cin >> edge[i].u >> edge[i].to >> edge[i].v;}for(int i = 1; i <= n; i++) f[i] = i;kruskal();if(ans == 0x3f3f3f3f) cout << "orz";else cout << ans;return 0;
}
http://www.gsyq.cn/news/29716.html

相关文章:

  • Tarjan练习
  • 洛谷 P7011 Escape
  • 【Java-JMM】Happens-before原则
  • P6072 『MdOI R1』Path
  • P1601题解
  • 关于驻马店市 2025 中小学信息学竞赛的记录(入门级)(未完)
  • 游记——驻马店市2025中小学信息学竞赛(未完)
  • ABP - SqlSugar [SqlSugarModule、ISqlSugarClient、SqlSugarRepository]
  • Odoo18.0 对接 京东快递
  • 轮次检测模型 VoTurn-80M 开源,多模态融合架构;OpenAI 收购桌面助手 Sky:实时识别屏幕自然语言交互丨日报
  • SAP维护汇率的关键Tcode
  • 第4天(中等题 滑动窗口、哈希表)
  • 申威服务器安装Java11(swjdk-11u-9.ky10.sw_64.rpm)详细操作步骤(附安装包)
  • Linux下的拼音输入法 (3)
  • P2606 [ZJOI2010] 排列计数 分析
  • 实用指南:MacOS - Clang使用bits/stdc++.h - 非官方(竞赛用) - 通用方法
  • 设计模式:代码界的 “光之巨人” 养成指南(附 C++ 实战)
  • 详细介绍:17-Language Modeling with Gated Convolutional Networks
  • 算法分析--生成排列
  • 三大安全认证授权协议深度对比:OAuth、OpenID Connect与SAML
  • (简记)(自用)线段树区间拆分时间复杂度证明
  • SpringBoot整合缓存2-Redis
  • 10.24 CSP-S 模拟37 改题记录
  • NOI25D2T2
  • 数字人企业:数字人公司重点推荐与选择指南
  • 据说每邀请一位朋友加入Comet,您可以获得10刀乐奖励:D
  • 王炸!OpenAI 发布 Atlas 浏览器!!
  • 课后作业4
  • cn域名隐私保护
  • 【开题答辩全过程】以 M11289生鲜商城为例,具备答辩的问题和答案