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

最小生成树专题

Prim算法

#include <bits/stdc++.h>
using namespace std;
const int N = 510;
const int inf = 0x3f3f3f3f;
int g[N][N];
int n, m;
int dist[N];
bool st[N];
int prim()
{int retv = 0;memset(dist, 0x3f, sizeof dist);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(dist[t] == inf && i) return inf;if(i) retv += dist[t];st[t] = true;for(int j = 1; j <= n; j++)dist[j] = min(dist[j], g[t][j]);}return retv;
}
int main()
{cin >> n >> m;memset(g, 0x3f, sizeof g);for(int i = 1; i <= m; i++){int a, b, c;cin >> a >> b >> c;g[a][b] = g[b][a] = min(g[a][b], c);}int t = prim();if(t == inf) cout << "impossible";else cout << t;
}

Prim算法的二叉堆优化版(一般不用)

Kruskal算法

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10, M = 2e5+10;
const int inf = 0x3f3f3f3f; 
int cnt, p[M];
struct edge{int a;int b;int c;bool operator<(const edge& u){return c < u.c;}
} e[M];
int n, m;
int find(int x)
{if(p[x] != x) p[x] = find(p[x]);return p[x];
}
int kruskal()
{int retv = 0;sort(e+1, e+m+1);for(int i = 1; i <= n; i++)p[i] = i;for(int i = 1; i <= m; i++){int a = find(e[i].a), b = find(e[i].b);if(a != b){p[a] = b;retv += e[i].c;cnt++;}}if(cnt < n-1) return inf;else return retv;
}
int main()
{cin >> n >> m;for(int i = 1; i <= m; i++){int a, b, c;cin >> a >> b >> c;e[i] = {a, b, c};}int t = kruskal();if(t == inf) cout << "impossible";else cout << t;
}


http://www.mrgr.cn/news/49909.html

相关文章:

  • 代码审计笔记-PHP
  • k8s Node节点维护
  • 【算法】贪心算法
  • 什么!FPGA可以自行二次开发了?
  • UE4 材质学习笔记10(程序化噪波/覆雪树干着色器/岩层着色器)
  • 速卖通商品详情接口技术解析及Python代码示例
  • 为什么要使用String.format
  • 在Windows上安装Zabbix Agent(企业级开源网络监控解决方案)
  • mac地址漂移实验
  • 记录晚上打呼噜的软件
  • 从2023年起,大模型爆火,如何成为抢手的大模型算法工程师?
  • 美国霍尼韦尔Honeywell火焰控制器BC1000A0220U/BC1000A0220F
  • 双通道-程控绝缘测试电阻箱主要工作方式
  • 使用Docker部署nextjs应用
  • vue中keep-alive组件使用和一些基础配置
  • Android SELinux——安全策略(三)
  • <Linux> 线程安全
  • JNI(Java Native Interface)和NIO(New Input/Output)是什么?
  • OpenCV高级图形用户界面(7)获取指定窗口的属性值函数getWindowProperty()的使用
  • CV图像处理小工具——json文件转mask