题目描述

使用Prim算法求图的最小生成树(MST)

输入

每组数据分为两个部分,第一部分为图的点数n,和边数m,
第二部分为m行,每一行输入三个数字,前两个为两个顶点的编号,第三个为边权重。

输出

最小生成树,输出时按照边的两个端点的升序输出。(先看左端点,再看右端点,端点不换位置)

样例输入 Copy

3 3
0 1 10
0 2 15
1 2 50

样例输出 Copy

0 1 10
0 2 15

package book;import java.util.Scanner;public class Prim {
static int m,n;public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);n=sc.nextInt();m=sc.nextInt();int map[][]=new int[m][m];for(int i=0;i<m;i++) {for(int j=0;j<m;j++) {map[i][j]=Integer.MAX_VALUE;}}for(int i=0;i<m;i++) {int start=sc.nextInt();int end=sc.nextInt();int length=sc.nextInt();map[start][end]=length;map[end][start]=length;}slove(map);}private static void slove(int[][] map) {int used[]=new int[n];int closet[]=new int[n];int lowcost[]=new int[n];for(int i=1;i<n;i++) {lowcost[i]=map[0][i];closet[i]=0;//初始化used[i]=0;}used[0]=1;for(int i=1;i<n;i++) {int j=0;int min=Integer.MAX_VALUE;for(int k=1;k<n;k++) {if(lowcost[k]<min&&used[k]==0) {min=lowcost[k];j=k;}}if(closet[j]<j) {System.out.println(closet[j]+" "+j+" "+map[closet[j]][j]);}else {System.out.println(j+" "+closet[j]+" "+map[closet[j]][j]);}used[j]=1;for(int k=1;k<n;k++) {if(map[j][k]<lowcost[k]&&used[k]==0) {lowcost[k]=map[j][k];closet[k]=j;}}}for(int j=1;j<n;j++) {System.out.print(lowcost[j]+" ");}}}

【Java】Prim最小生成树相关推荐

  1. 技术图文:如何利用C# 实现 Prim 最小生成树算法?

    背景 我们上一篇图文介绍了 如何利用 C# 实现 Kruskal 最小生成树算法?,Kruskal 算法通过寻找边最优的方式来构造最小生成树,本篇图文介绍如何利用 C# 实现 Prim 最小生成树算法 ...

  2. 数据结构---prim最小生成树

    数据结构-prim最小生成树 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 100 #defin ...

  3. 基于C++的带权无向图的实现 (三)- Prim最小生成树算法

    该系列文章是本人整理的有关带权无向图的数据结构和算法的分析与实现,若要查看源码可以访问我的github仓库,如有问题或者建议欢迎各位指出. 目录 基于C++的带权无向图的实现 (一)- 数据结构 基于 ...

  4. prim最小生成树算法原理

    prim 最小生成树算法原理 主要需要了解算法的原理.算法复杂度.优缺点 .刻画和度量指标 评价等 可以查阅相关的文献,这部分内容主要整合了两篇博客的内容 分别是:http://blog.csdn.n ...

  5. [Java学习] 最小生成树——Prim算法

    文章目录 最小生成树 Prim算法流程 应用实例 求最小生成树 最小生成树 百度百科上对于最小生成树的定义是这样的:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结 ...

  6. Java实现最小生成树算法(Prim算法)

    Prim算法 Prim算法,每一步都会为一颗生长中的树添加一条边.一开始这棵树只有一个顶点,然后哦会向它添加V-1条边,每次总是将下一条连接树的顶点与不在树中且权重最小的边加入树中 实现 最小生成树的 ...

  7. prim 最小生成树算法 java实现

    http://ac.jobdu.com/problem.php?pid=1024 import java.util.Arrays; import java.util.Scanner;public cl ...

  8. POJ 2485 Highways (prim最小生成树)

    对于终于生成的最小生成树中最长边所连接的两点来说 不存在更短的边使得该两点以不论什么方式联通 对于本题来说 最小生成树中的最长边的边长就是使整个图联通的最长边的边长 由此可知仅仅要对给出城市所抽象出的 ...

  9. Prim最小生成树算法

    在一个具有几个顶点的连通图G中,如果存在子图G'包含G中所有顶点和一部分边,且不形成回路,则称G'为图G的生成树,代价最小生成树则称为最小生成树. 许多应用问题都是一个求无向连通图的最小生成树问题.例 ...

最新文章

  1. xgboost模型在centos系统下的可视化
  2. 最简单的基于FFMPEG的推流器附件:收流器
  3. RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
  4. 各Rendering Path技术以及其在Unity中的实现
  5. 压缩命令_Linux gzip命令:压缩文件或目录
  6. 普通大学毕业后干啥_一名女孩从大学毕业后在机械行业干了十年,背后经历让人辛酸……...
  7. 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...
  8. vue router children 路由变了 组件没变_Vue.js从零开始——路由(2)
  9. 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
  10. C语言格式化读写文件
  11. mysql数据库什么情况下会锁表_mysql数据库锁的产生原因及解决办法
  12. educoder 使用线程锁(lock)实现线程同步_Java8并发包源码分析:重入锁ReentrantLock和Condition实现原理...
  13. 快手内容运营-数据分析面试
  14. C# :弧度角度转换
  15. 梯度下降算法和逆误差传播算法
  16. PPC飞信问题...WM6.5版无法安装以及连接
  17. 对话 Roy Li: 信任的产生即价值的产生
  18. C++中四种cast转换
  19. 什么是知识图谱(Knowledge Graph)(上)
  20. 视频or音频转文字的处理方案

热门文章

  1. 归并排序算法-伪代码
  2. android activity获取dialog对象,Android开发笔记之:Dialog的使用详解
  3. 虚拟机运行安卓ISO
  4. matlab用RNN预测股票,使用RNN预测股票价格系列一
  5. IMAUOJ——1013: 超级密码
  6. windows计划任务 0xff_Windows服务器入侵检测排查方法
  7. 线性表 (一) 线性表定义与线性表插入与删除
  8. python 中正无穷,负无穷的表示
  9. IPv6连接类型Native Static、Native DHCPv6、Tunnel 6in4、Tunnel 6to4、Tunnel 6rd的区别
  10. linux关于日志文件介绍,Linux下重要日志文件介绍