例题:P3366 【模板】最小生成树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

Kruskal

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; struct UFS {
int sz;
vector<int> rank, p;
void link(int x, int y) {
if (x == y)
return;
if (rank[x] > rank[y])
p[y] = x;
else
p[x] = y;
if (rank[x] == rank[y])
rank[y]++;
}
void init(int n) {
sz = n;
rank.resize(n + 1);
p.resize(n + 1);
for (int i = 0; i <= sz; i++) {
p[i] = i;
rank[i] = 0;
}
}
int find(int x) {
return x == p[x] ? x : (p[x] = find(p[x]));
}
void unin(int x, int y) {
link(find(x), find(y));
}
void compress() {
for (int i = 0; i < sz; i++)
find(i);
}
};
//种类并查集 merge(y + n, x),merge(x + n, y) int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m;
cin >> n >> m;
vector<pair<int, PII>> e;
for (int i = 0; i < m; i ++) {
int u, v, w;
cin >> u >> v >> w;
e.emplace_back(w, PII(u, v));
} sort(e.begin(), e.end());
UFS ufs;
ufs.init(n);
i64 ans = 0;
for (int i = 0; i < m; i ++) {
auto [w, uv] = e[i];
auto [u, v] = uv;
if (ufs.find(u) != ufs.find(v)) {
ufs.unin(u, v);
ans += w;
}
} int op = ufs.find(1);
for (int i = 1; i <= n; i ++) {
if (ufs.find(i) != op) {
cout << "orz" << '\n';
return 0;
}
} cout << ans << '\n'; return 0;
}

Prim

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int n, m;
cin >> n >> m;
vector g(n + 1, vector<PII>());
vector<int> dis(n + 1);
vector<bool> vis(n + 1);
i64 ans = 0, cnt = 0;
for (int i = 0; i < m; i ++) {
int u, v, w;
cin >> u >> v >> w;
g[u].emplace_back(v, w);
g[v].emplace_back(u, w);
} priority_queue<PII, vector<PII>, greater<PII>> Q;
Q.push({0, 1});
while (Q.size()) {
auto [w, u] = Q.top();
Q.pop(); if (vis[u]) continue;
vis[u] = true;
ans += w;
cnt ++;
dis[u] = w;
for (auto [v, d] : g[u]) {
if (!vis[v]) {
Q.push({d, v});
}
}
} if (cnt != n) {
cout << "orz\n";
} else
cout << ans << '\n'; return 0;
}

Kruskal和Prim模板的更多相关文章

  1. 最小生成树(kruskal模版 Prim模板)

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2144&cid=1186 最小生成树,最重要的是了解思想 稠密图用Prim,稀疏图用Kru ...

  2. HDU 1223 还是畅通工程(最小生成树prim模板)

    一个很简单的prim模板,但虽然是模板,但也是最基础的,也要脱离模板熟练打出来 后期会更新kruskal写法 #include<iostream> #include<cstdio&g ...

  3. HDU1875+Prim模板

    https://cn.vjudge.net/problem/HDU-1875 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府 ...

  4. 最小生成树——Kruskal与Prim算法

    最小生成树——Kruskal与Prim算法 序: 首先: 啥是最小生成树??? 咳咳... 如图: 在一个有n个点的无向连通图中,选取n-1条边使得这个图变成一棵树.这就叫“生成树”.(如下图) 每个 ...

  5. 关于最小生成树 Kruskal 和 Prim 的简述(图论)

    模版题为[poj 1287]Networking. 题意我就不说了,我就想简单讲一下Kruskal和Prim算法.卡Kruskal的题似乎几乎为0.(●-`o´-)ノ 假设有一个N个点的连通图,有M条 ...

  6. Kruskal && Prim模板

    1. Kruskal(并查集模板): /* Kruskal:并查集实现,记录两点和距离,按距离升序排序,O (ElogE) */ struct Edge { int u, v, w; bool ope ...

  7. HDU 1863 畅通工程(Prim,Kruskal,邻接表模板)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. 最小生成树的kruskal、prim算法

    kruskal算法和prim算法 都说 kruskal是加边法,prim是加点法 这篇解释也不错:这篇 1.kruskal算法 因为是加边法,所以这个方法比较合适稀疏图.要码这个需要先懂并查集.因为我 ...

  9. poj2485 kruskal与prim

    Kruskal: #include<iostream> #include<cstdio> #include<algorithm> using namespace s ...

  10. HDU 1102 最小生成树裸题,kruskal,prim

    1.HDU  1102  Constructing Roads    最小生成树 2.总结: 题意:修路,裸题 (1)kruskal //kruskal #include<iostream> ...

随机推荐

  1. kong网关部署

    软件版本: Postgresql:9.6 (不使用最新版,是因为 konga 不支持) Kong:3.4.2 konga:0.14.7 (UI管理界面) ### Postgresql部署 ## doc ...

  2. Kubernetes(二)资源管理

    1. 资源管理介绍 在kubernetes中,所有内容都抽象为资源,用户需要操作资源来管理kubernetes. Kubernetes本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服 ...

  3. .net入行三年的感想回顾

    从21年毕业到现在,还差几天就三年了 工作后才知道,工作年限分为1年以下 .3~5年.5~10年.晋升老板,每段都有每段的故事和总结 回顾下我的前三年工作心路,思考下未来发展之路(emmm,我是觉得我 ...

  4. NXP i.MX 8M Mini开发板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M4,主频1.6GHz)

    1 评估板简介 创龙科技TLIMX8-EVM是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高性能评估板,由核心板和 ...

  5. power bi 如何删除敏感度标签

    经验证,此方法不够彻底,我的office excel打开后还是要添加敏感度标签,即使我把敏感度标签删掉也不行. 当我把创建敏感度标签的管理员账户删掉之后,虽然打开excel还是会显示敏感度标签,但是已 ...

  6. typora markdown笔记

    前言 此为个人markdown笔记,不定时更新. 正文 1. mermaid 使用 横向流程图 源码 graph LR a(起始)-->b(中间) b-->c1<-->d b- ...

  7. Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file

    导读 晚上捣鼓数据库的时候,将mysql服务停止下,然后就死活启动不起来,这下可把我急坏了,自己数据库上有好多自己的个人项目,错误信息如下 ERROR! The server quit without ...

  8. var 和 let 在 jQuery中的区别

    下面通过代码案例来进一步解释 var 和 let 在 jQuery link 函数中的区别: (function ($) { $.fn.link = function () { // Example ...

  9. [oeasy]python0119_语言的演化_拉丁字符_罗马帝国_罗马体

    罗马拉丁字符 回忆上次内容 起源于埃及的 圣书体 象形文字 在与 两河流域的 苏美尔楔形文字 结合后 经过 腓尼基人 的拼音化 和 广泛传播 终于来到了 希腊   ​   添加图片注释,不超过 140 ...

  10. [翻译]欢迎使用C#9.0

    本文由公众号[开发者精选资讯](微信号:yuantoutiao)翻译首发,转载请注明来源 C# 9.0 is taking shape, and I'd like to share our think ...