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

四川建设厅网站登录不上咋办重庆网站建设cq

四川建设厅网站登录不上咋办,重庆网站建设cq,深圳专业网站建设公司哪家好,服装网站建设公司哪家好Day57–图论–53. 寻宝(卡码网) 今天学习:最小生成树。有两种算法(Prim和Kruskal)和一道例题。 prim 算法是维护节点的集合,而 Kruskal 是维护边的集合。 最小生成树:所有节点的最小连通子图&am…

Day57–图论–53. 寻宝(卡码网)

今天学习:最小生成树。有两种算法(Prim和Kruskal)和一道例题。

prim 算法是维护节点的集合,而 Kruskal 是维护边的集合

最小生成树:所有节点的最小连通子图,即:以最小的成本(边的权值)将图中所有节点连接到一起。

53. 寻宝(卡码网)

方法:Prim最小生成树

思路:

  1. 第一步,选距离生成树最近节点
  2. 第二步,最近节点加入生成树
  3. 第三步,更新非生成树节点到生成树的距离(即更新minDist数组)(minDist数组用来记录每一个节点距离最小生成树的最近距离。)
import java.util.*;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int v = in.nextInt();int e = in.nextInt();int[][] grid = new int[v + 1][v + 1];for (int i = 0; i <= v; i++) {Arrays.fill(grid[i], 10001);}for (int i = 0; i < e; i++) {int from = in.nextInt();int to = in.nextInt();int val = in.nextInt();grid[from][to] = val;grid[to][from] = val;}int[] minDist = new int[v + 1];Arrays.fill(minDist, 10001);boolean[] isInTree = new boolean[v + 1];for (int i = 1; i < v; i++) {int cur = -1;int minVal = Integer.MAX_VALUE;for (int j = 1; j <= v; j++) {if (!isInTree[j] && minDist[j] < minVal) {minVal = minDist[j];cur = j;}}isInTree[cur] = true;for (int j = 1; j <= v; j++) {if (!isInTree[j] && grid[cur][j] < minDist[j]) {minDist[j] = grid[cur][j];}}}int sum = 0;for (int i = 2; i <= v; i++) {sum += minDist[i];}System.out.println(sum);}
}

方法:Kruskal最小生成树

思路:

  • 边的权值排序,因为要优先选最小的边加入到生成树里
  • 遍历排序后的边
    • 如果边首尾的两个节点在同一个集合,说明如果连上这条边图中会出现环
    • 如果边首尾的两个节点不在同一个集合,加入到最小生成树,并把两个节点加入同一个集合
import java.util.*;class Disjoint {private int[] father;public Disjoint(int n) {father = new int[n + 1];for (int i = 0; i <= n; i++) {father[i] = i;}}public int find(int a) {if (a == father[a]) {return a;} else {return father[a] = find(father[a]);}}public boolean isSame(int o1, int o2) {return find(o1) == find(o2);}public void join(int o1, int o2) {int root1 = find(o1);int root2 = find(o2);if (root1 == root2) {return;}father[root2] = root1;}
}public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int v = in.nextInt();int e = in.nextInt();Disjoint dj = new Disjoint(v);int[][] edges = new int[e][3];for (int i = 0; i < e; i++) {edges[i][0] = in.nextInt();edges[i][1] = in.nextInt();edges[i][2] = in.nextInt();}Arrays.sort(edges, (a, b) -> Integer.compare(a[2], b[2]));int sum = 0;for (int i = 0; i < e; i++) {int n1 = edges[i][0];int n2 = edges[i][1];int val = edges[i][2];if (!dj.isSame(n1, n2)) {dj.join(n1, n2);sum += val;}}System.out.println(sum);}
}
http://www.dtcms.com/a/542669.html

相关文章:

  • 做网站会什么问题网站制作在线版
  • 医疗培训网站建设保定建设网站及推广
  • 新塘网站seo优化深圳装修设计培训
  • 中国人事建设部网站南昌网站设计公司哪家好
  • 东莞网站建设+信科网络江苏常州烽火台网络推广
  • DrvBsp_I2C驱动_RTC(一)
  • 中国建设银行用e路这么进网站自动生成网址的软件
  • 做网站的软件microwordpress教程插件
  • 网站建设灵寿宣传网站建设意义
  • 网站建设那种语言好做手机网站一般要多少钱
  • 网站建设发布教程视频本地网站建设视频教程
  • 【操作系统】考研408操作系统核心考点精讲:进程的五大状态与转换机制剖析​
  • 红玫瑰直播免费版视频郑州百度关键词seo
  • 企业网站官网制作佛山市住房和城乡建设管理局网站
  • 建站源码政务公开 加强门户网站建设
  • 杭州做网站小程序公司上海外贸博览会
  • Unity资源加载模块全解析
  • 医院网站建设的宗旨加强教育信息网站建设
  • 建单页网站wordpress对接静态网页
  • 网站建设书店目标客户分析系统定制开发
  • 58招聘运营网站怎么做排名优化关键词公司
  • php网站做代理电子商务网站建设实战
  • 北京 外贸网站建设深圳网站建设叶林
  • 济南做网站建设手机网站有免费做的吗
  • 音乐网站建设方案vip影视网站怎么做的
  • 章丘做网站单位哪家好制作网站时搜索图标如何做
  • 公司网站上传图片做弹弓教程网站
  • 外贸如何做网站推广芜湖网站推广
  • js事件循环机制简介
  • 吕梁建站公司网站建设背景及意义