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

局域网——Prim Kruskal

题目

Prim (生成一颗包含起点的最小生成树,所以要多次调用)

#include <bits/stdc++.h>using namespace std;const int N = 510;
const int inf = 0x3f3f3f3f;int n, m;
int g[N][N], dis[N];
bool p[N], vis[N];int prim (int u)
{memset(dis, 0x3f, sizeof dis); dis[u] = 0;int sum = 0;for(int i = 0 ; i < n ; i ++ ){int t = -1;for(int j = 1 ; j <= n ; j ++ )if(!p[j] && (t == -1 || dis[t] > dis[j]))t = j;if(i && dis[t] == inf) return sum;p[t] = 1;if(i) sum += dis[t]; // 第一个点为根节点没有边权vis[t] = 1;for(int j = 1 ; j <= n ; j ++ )if(!p[j] && dis[j] > g[t][j]) dis[j] = g[t][j];}return sum;
}int main ()
{int ans = 0;cin >> n >> m;for(int i = 1 ; i <= n ; i ++ )for(int j = 1 ; j <= n ; j ++ )if(i == j) g[i][j] = 0;else g[i][j] = inf;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);ans += min(g[a][b], c);}int t = 0;for(int i = 1 ; i <= n ; i ++ )if(!vis[i]) t += prim(i);cout << ans - t << endl;return 0;
}

Kruskal (如果有多颗生成树,生成最小生成森林)

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const int M = 210;
struct edge{int a;int b;int c;bool operator < (const edge& v){return c < v.c;}
} e[M];
int p[N];
int n, idx, m;
int find(int x)
{if(p[x] != x) p[x] = find(p[x]);return p[x];
}
int kruskal()
{int retv = 0;for(int i = 1; i <= n; i++)p[i] = i;sort(e+1,e+m+1);for(int i = 1; i <= m; i++){int a = e[i].a, b = e[i].b, c = e[i].c;a = find(a), b = find(b);if(a != b){p[a] = b;retv += c;}}return retv;
}
int main()
{cin >> n >> m;int sum = 0;for(int i = 1; i <= m; i++){int a, b, c;cin >> a >> b >> c;e[++idx]  = {a, b, c};sum += c;}int t = kruskal();cout << sum - t;
}


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

相关文章:

  • C#中Task.ContinueWith如何使用
  • 价值投资(Value Investing)
  • Docker 入门 - 拉取/创建镜像 + 运行和管理容器
  • 视频网站开发:Spring Boot框架的高效实现
  • 学习eNSP对提升就业竞争力有多大帮助?
  • 【VUE安装本地自定义capacitor插件以及打包成安卓APK过程】
  • Python学习100天第14天之网络编程入门和网络应用开发
  • 什么是智能电网?
  • vscode:black formatter配置
  • C++贪心
  • 项目管理的坎坷之路与 MBTI 的启示录
  • VMware ESXi 8.0U3 Huawei (华为) 定制版更新 OEM BIOS 2.7 支持 Windows Server 2025
  • JavaWeb开发5
  • ChatGPT官方桌面客户端的平替,Github 52.7K Stars!支持Mac、Win、Linux!
  • liunx常用基础命令-运维方向
  • LeetCode题练习与总结:区间和的个数--327
  • 面向对象与设计模式第一课:深入理解OOP
  • 机器学习——量子机器学习(Quantum Machine Learning)
  • Js中,const为什么常用来定义函数?
  • 基于大模型的招聘智能体:从创意到MVP
  • 【RoadRunner】自动驾驶模拟3D场景构建 | 自定义交叉口工具详解
  • Android SELinux——添加策略实例(十五)
  • 组装电脑主板配置全解析:从入门到精通
  • SSDF攻击及防御PPT及讲稿
  • 【漏洞复现】华望云 会议管理平台 deptactionlist 后台SQL注入漏洞
  • 基于单片机的多功能鱼缸控制系统设计