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

代码随想录算法训练营第55天|最小生成树:prim、kruskal算法

文章目录

  • 最小生成树
    • prim算法
    • kruskal算法

最小生成树

卡码网 53. 寻宝

prim算法

代码随想录 prim算法精讲

有一个大坑,自己建立邻接矩阵的时候一定记得要双向。

import heapqV, E = map(int, input().split())graph = [[-1]* (V+1) for _ in range(V + 1) ]for _ in range(E):s,t,val = map(int, input().split())graph[s][t] = val# 确保是一个无向图graph[t][s] = valvisited = [False] * (V + 1)res = 0
min_heap = []
# 建立一个小顶堆?def add_edges(i):visited[i] = Truefor j in range(0, V + 1):if visited[j] == False and graph[i][j] != -1:heapq.heappush(min_heap, (graph[i][j], i, j))add_edges(1)while min_heap:weight, s, t = heapq.heappop(min_heap)if not visited[t]:res += weightadd_edges(t)print(res)

kruskal算法

代码随想录 kruskal算法精讲

class UnionFind:def __init__(self, size):self.parent = list(range(size+1))def find(self, node):if self.parent[node] != node:self.parent[node] = self.find(self.parent[node])return self.parent[node]def union(self, s, t):parent_s = self.find(s)parent_t = self.find(t)if parent_s != parent_t:self.parent[parent_t] = parent_sdef is_same(self, s, t):return self.find(s) == self.find(t)def kruskal(V, edges):edges.sort(key=lambda x: x[2])uf = UnionFind(V)res = 0for s,t,weight in edges:if uf.find(s) != uf.find(t):uf.union(s, t)res += weightreturn res
V, E = map(int, input().split())data = []
for _ in range(E):data.append(list(map(int, input().split())))res = kruskal(V, data)print(res)

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

相关文章:

  • #渗透测试#安全见闻7 硬件设备的网络安全问题与潜在漏洞分析
  • MFC实现以不规则PNG图片作为窗口背景
  • 「C/C++」C++三大特性之封装、继承、多态(大致了解)
  • 单片机入门教程
  • 03 P1803 凌乱的yyy / 线段覆盖
  • 算法的学习笔记—数组中只出现一次的数字(牛客JZ56)
  • 密码管理APP需求分析报告
  • 苍穹外卖总结
  • SaaS诊所云平台管理系统源码,采用Vue 2+Spring Boot+MyBatis技术开发,开箱即用。
  • 如何与家人相处 林曦老师有话说
  • cisp考试多久出结果?cisp认证考试指南,零基础入门到精通,收藏这篇就够了
  • 部署DNS主从服务器
  • jclasslib插件使用细节
  • 从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
  • vue3 svg图像 的实例
  • Linux中级(DNS域名解析服务器)
  • 代码随想录算法训练营第二十六天|Day26 贪心算法
  • 1.Linux按键驱动
  • Qgis 开发初级 《ToolBox》
  • 2024年华为OD机试真题-矩形相交面积-Java-OD统一考试(E卷)
  • FreeSWITCH 简单图形化界面32 - 判断手机号归属地,自动补0
  • World of Warcraft [CLASSIC][80][the Ulduar]
  • HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)
  • C++中红黑树的实现
  • 银行测试干货:一文吃透银行业务重难点
  • nfs服务部署案例