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

idc科技公司网站模板114网址大全

idc科技公司网站模板,114网址大全,wordpress百度sitemap,四川自助网站实现描述 为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。 实现代码 首选我们对所有的边&#xff0c…

实现描述

为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。

实现代码

  1. 首选我们对所有的边,按照权重排序;
  2. 之后,从小到大选择边,如果当前的边已经连通过了,则放弃此边,查看下一条边;若没有连通过,通过并查集进行连通;
  3. 直至所有点都访问过,此时,完成。

在这里插入图片描述

如上图,节点0~5,边关系如上;
先对边权重进行从小到大排序,得到:

[{"u":4,"v":5,"weight":1
},{"u":0,"v":5,"weight":3
},{"u":1,"v":2,"weight":4
},{"u":0,"v":1,"weight":5
},{"u":2,"v":3,"weight":5
},{"u":3,"v":4,"weight":5
},{"u":3,"v":5,"weight":6
},{"u":0,"v":3,"weight":7
},{"u":0,"v":2,"weight":8
},{"u":2,"v":5,"weight":9
}]

然后依次选择排序后的边:
在这里插入图片描述
下面代码对应上图数据及其过程:

import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;import java.util.*;public class kruskal {/*** 边定义*/@Data@AllArgsConstructor@NoArgsConstructorstatic class Edge implements Comparable<Edge> {int u, v;int weight;@Overridepublic int compareTo(@NotNull Edge o) {return weight - o.weight;}}static List<Edge> getKruskalEdges(int nodeNum, int[][] grid) {List<Edge> result = new LinkedList<>();List<Edge> edges = new LinkedList<>();for (int i = 0; i < grid.length; i++) {int u = grid[i][0];int v = grid[i][1];int weight = grid[i][2];edges.add(new Edge(u, v, weight));}Collections.sort(edges);UnionFindTemplate uf = new UnionFindTemplate(nodeNum);Set<Integer> visited = new HashSet<>();for (Edge edge : edges) {if (uf.connected(edge.u, edge.v)) {continue;}uf.union(edge.u, edge.v);visited.add(edge.u);visited.add(edge.v);result.add(edge);if (visited.size() == nodeNum) {break;}}return result;}public static void main(String[] args) {int nodeNum = 6;int[][] grid = {{0, 1, 5},{0, 5, 3},{0, 3, 7},{0, 2, 8},{1, 2, 4},{2, 5, 9},{3, 5, 6},{2, 3, 5},{3, 4, 5},{4, 5, 1}};System.out.println(JSONObject.toJSONString(getKruskalEdges(nodeNum, grid)));}
}

其中,并查集模版的实现如下:

public class UnionFindTemplate {int[] parent;int[] size;int n;public int setCount;//连通分量个数public UnionFindTemplate(int n) {this.n = n;this.parent = new int[n];this.size = new int[n];setCount = n;Arrays.fill(this.size, 1);for (int i = 0; i < n; ++i) {parent[i] = i;}}public int findParent(int x) {if (parent[x] == x) {return x;} else {parent[x] = findParent(parent[x]);return parent[x];}}public void union(int x, int y) {x = findParent(x);y = findParent(y);if (x == y) {return;}if (size[x] < size[y]) {int temp = x;x = y;y = temp;}//y合并到xparent[y] = x;size[x] += size[y];setCount--;}public boolean connected(int x, int y) {x = findParent(x);y = findParent(y);return x == y;}}
http://www.khdw.cn/news/45066.html

相关文章:

  • 新手怎么学代码编程定西seo排名
  • 网站做优化有几种方式免费顶级域名注册
  • 可以做机械设计接单的网站seo建站教学
  • 网站开发框架是什么app开发费用
  • 广西建筑工程网seo案例分享
  • 当富广州网站建设seo快速入门教程
  • 做炫舞情侣头像动态图网站个人网站设计成品
  • 个人投资公司注册条件茂名百度seo公司
  • 宜昌哪里做网站口碑营销成功案例简短
  • 企业系统查询百度seo软件曝光行者seo
  • 网站设计有限公司是干嘛的seo网站搜索优化
  • 成都免费建网站公司营销策划方案ppt模板
  • 营销型网站建设主要步骤郑州网站制作公司
  • z云邮企业邮箱登录绍兴seo
  • 做网站怎么接单营销方案范文
  • 外包做网站公司有哪些百度网盘下载安装
  • 台州做鞋子网站线下推广100种方式
  • php动态网站开发唐四馨江苏seo技术教程
  • 想把比尔的网站封了如何做个人网页怎么制作
  • 廊坊百度快速优化排名临沂网站建设优化
  • 餐饮公司网站建设的特点北京优化网站建设
  • 做网站的公司叫什么软件如何建立公司网站网页
  • 电商网站开发需求文档企业营销策略有哪些
  • 南宁怎么做网站网络营销的四大特点
  • 重庆手机版建站系统信息天津seo网站推广
  • 女生java网站开发培训后好找工作互联网创业项目
  • 国家知识产权局专利检索系统高级seo是什么职位
  • 大连建设项目seo推广是做什么的
  • 免费的工程信息网站西安百度推广优化托管
  • 建站的cms商城小程序