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

day57-graph theory-part07-8.28

tasks for today:

1. prim算法 53.寻宝

2. kruskal算法 53.寻宝

----------------------------------------------------------------------------

1. prim算法 53.寻宝

In this practice, we see how prim algorithm is used. The essence of this practice is: there are n points, m edges, select n-1 edges from the m edges, making the total weight of the edges are minimized. n-1 edges can link all n points.

This practice is led by the 3-step structure of prim algorithm.

need to pay attention to the 10001, which is the 1 + 10000, 10000 is the maximum points number in this practice's configuration;

please be noted that the graph's entries assignment, graph[x][y] and graph[y][x] should be assigned with the same weight.

def main():v, e = map(int, input().split())graph = [[10001] * (v+1) for _ in range(v+1)]for _ in range(e):x, y, w = map(int, input().split())graph[x][y] = wgraph[y][x] = wvisited = [False] * (v+1)minDis = [10001] * (v+1)for i in range(1, v+1):min_Val = 10002cur = -1# step 1for j in range(1, v+1):if visited[j] == False and minDis[j] < min_Val:cur = jmin_Val = minDis[j]# step 2visited[cur] = True# step 3for k in range(1, v+1):if visited[k] == False and minDis[k] > graph[cur][k]:minDis[k] = graph[cur][k]res = 0for i in range(2, v+1):res += minDis[i]print(res)returnif __name__ == "__main__":main()

2. kruskal算法

Based on the same practice, the kruskai algorithm is discussed here. The difference is that, the prim algo is maintaining a set of points, whereas the kruskai maintains a set of edges.

This method may involve using the method discussed in day 55 & 56.

class Edge:def __init__(self, l, r, weight):self.l = lself.r = rself.weight = weightdef find(u, father):if father[u] == u:return uelse:return find(father[u], father)def join(u, v, father):u = find(u, father)v = find(v, father)if u == v: returnfather[v] = udef isSame(u, v, father):u = find(u, father)v = find(v, father)return u == vdef main():v, e = map(int, input().split())edges = []for _ in range(e):x, y, w = map(int, input().split())edges.append(Edge(x, y, w))edges.sort(key = lambda edge: edge.weight)father = list(range(v+1))result = 0for i in range(e):if not isSame(edges[i].l, edges[i].r, father):result += edges[i].weightjoin(edges[i].l, edges[i].r, father)print(result)returnif __name__ == "__main__":main()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度强化学习算法(四)(附带MATLAB程序)
  • 基于imx6ull平台opencv的图像采集和显示屏LCD显示功能(不带Qt界面)
  • CMake Error at CMakeLists.txt (find_package)幕后真凶
  • Linux之ip命令详解
  • Dockerfile+私有仓库
  • 创新互动体验RAG:利用角色化AI技术增强影视评论的沉浸感
  • [mysql]mysql的演示使用
  • linux下使用xargs批量操作
  • 数据结构与算法的代码实现(C++版)
  • 设计模式 代理模式(Proxy Pattern)
  • 一个简单的CRM客户信息管理系统,提供客户,线索,公海,联系人,跟进信息和数据统计功能(附源码)
  • Maven学习(零基础到面试)
  • 【Qt窗口】—— 浮动窗口
  • DARKTIMES集成到Sui,带来中世纪格斗大逃杀游戏体验
  • 【教程】实测np.fromiter 和 np.array 的性能
  • 【剑指offer】让抽象问题具体化
  • 30秒的PHP代码片段(1)数组 - Array
  • Android框架之Volley
  • Java教程_软件开发基础
  • Java面向对象及其三大特征
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • nginx 负载服务器优化
  • webpack+react项目初体验——记录我的webpack环境配置
  • 阿里云应用高可用服务公测发布
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 经典排序算法及其 Java 实现
  • 前端自动化解决方案
  • 全栈开发——Linux
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 整理一些计算机基础知识!
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何使用QGIS制作三维建筑
  • #APPINVENTOR学习记录
  • #Z0458. 树的中心2
  • (06)金属布线——为半导体注入生命的连接
  • (1)Android开发优化---------UI优化
  • (AngularJS)Angular 控制器之间通信初探
  • (分布式缓存)Redis分片集群
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (七)glDrawArry绘制
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)关于多人操作数据的处理策略
  • .net core Swagger 过滤部分Api
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net MVC + EF搭建学生管理系统
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET 指南:抽象化实现的基类
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接