prim 最小生成树算法 java实现
http://ac.jobdu.com/problem.php?pid=1024
import java.util.Arrays;
import java.util.Scanner;public class 畅通工程 {static int n,m,a,b;static final long MAX = 10000000;static long map[][] = new long[101][101];static long c;static long ans;static boolean visited[] = new boolean[101];static long lowcost[] = new long[101];static int close[] = new int[101];public static void main(String[] args) {Scanner s = new Scanner(System.in);while(s.hasNext()){n = s.nextInt();m = s.nextInt();//System.out.prlongln(n + " " + m);if(n == 0)break;for(int i=0; i<m; i++)for(int j=0; j<m; j++)map[i][j] = MAX;Arrays.fill(close, 0, m, 0);Arrays.fill(visited, 0, m, false);for(long i=0; i<n; i++){a = s.nextInt() -1;b = s.nextInt() -1;c = s.nextLong();if(c < map[a][b]){map[a][b] = c;map[b][a] = c;}}if(n < m-1){System.out.println("?");continue;}sovle();boolean flag = true;for(int i=0; i<m; i++){if(!visited[i]){flag = false;break;}}if(flag && ans < MAX)System.out.println(ans);elseSystem.out.println("?");}}static boolean sovle(){ans = 0;visited[0] = true;for(int i=0; i<m; i++)lowcost[i] = map[0][i];for(int i=1; i<m; i++){int index = 0;long min = MAX;for(int j=1; j<m; j++){if(!visited[j] && map[0][j] < min){min = map[0][j];index = j;}}if(min >= MAX)return false;ans += map[0][index];visited[index] = true;map[0][index] = 0; long temp = 0;for(int j=0; j<m; j++){if(!visited[j] && map[index][j] < MAX){temp = map[0][index] + map[index][j];if(temp < map[0][j]){
// indexs[j] = index;map[0][j] = temp;}}}}return true;}}
prim 最小生成树算法 java实现相关推荐
- 技术图文:如何利用C# 实现 Prim 最小生成树算法?
背景 我们上一篇图文介绍了 如何利用 C# 实现 Kruskal 最小生成树算法?,Kruskal 算法通过寻找边最优的方式来构造最小生成树,本篇图文介绍如何利用 C# 实现 Prim 最小生成树算法 ...
- 基于C++的带权无向图的实现 (三)- Prim最小生成树算法
该系列文章是本人整理的有关带权无向图的数据结构和算法的分析与实现,若要查看源码可以访问我的github仓库,如有问题或者建议欢迎各位指出. 目录 基于C++的带权无向图的实现 (一)- 数据结构 基于 ...
- prim最小生成树算法原理
prim 最小生成树算法原理 主要需要了解算法的原理.算法复杂度.优缺点 .刻画和度量指标 评价等 可以查阅相关的文献,这部分内容主要整合了两篇博客的内容 分别是:http://blog.csdn.n ...
- 普里姆(Prim)算法 Java实现(最小生成树)
构造最小生成树的Prim算法(从顶点的思想) 自己的话描述: 1. 从任意一个顶点开始.临时权值数组就是该顶点的权值数组. 2. 找到一条权重最小的边,然后把这两个顶点视为一个顶点,新加入的顶点在临时 ...
- Prim最小生成树算法
在一个具有几个顶点的连通图G中,如果存在子图G'包含G中所有顶点和一部分边,且不形成回路,则称G'为图G的生成树,代价最小生成树则称为最小生成树. 许多应用问题都是一个求无向连通图的最小生成树问题.例 ...
- Python 实现Prim最小生成树算法
最小生成树(MST):对于带权无向图所有的生成树中,代价最小的生成树称为图的最小生成树. Prim算法:假设N=(V,E) 是具有n个顶点的连通图,设U是最小生成树中顶点的集合,设TE是最小生成树中边 ...
- prim最小生成树算法 邻接表+STL实现
一.预备知识 优先队列 二.代码: #include<iostream> #include<list> #include<vector> #include<m ...
- 大话数据结构18:最小生成树算法
prim最小生成树算法 对于几个图G{V,E};首先从V中任意选择一个顶点Vo 将其加入到顶点集合U中,在顶点集合V-U中计算所有到V中任意顶点假设是Vo最近的顶点Voo,将其加入到U中,并且记录边E ...
- 最小生成树Prim算法Java版
最小生成树Prim算法Java版 算法描述: 在一个加权连通图中,顶点集合V,边集合为E 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit. ...
最新文章
- 搭建网站必不可少的知识3
- 100G内存下,MySQL查询200G大表会OOM么?
- Centos 监控进程,并自动重启
- android 无线接口 泛收,Android下的Java之interface接口泛型 动态获取泛型的类型
- java请求报错(原因:CORS 头缺少 ‘Access-Control-Allow-Origin‘)
- .NETFramework:Byte
- 养一辆最新的奥迪Q7一年要花费多少钱?
- 《剑指offer》面试题16——反转链表(C++)
- ipad mini2 进入DFU模式
- 控制Tello无人机扫描条形码
- java servlet容器有哪些_Java Web —— servlet 容器
- PV、UV、IV的概念
- 远程计算机打印,教你玩转远程终端打印机
- 利用PS将.jpg文件转换为.pdf文件
- 华为运营商级路由器配置示例 | EVdPdNd VPLS over SRv6 TE Policy(静态配置)
- 厕所地图,玩出新花样!
- 林轩田机器学习基石Lecture 6: Theory of Generalization
- html页面长按保存图片,h5长按保存图片
- 罗杨美慧 20190919-2 功能测试
- 巴菲特经典演讲《价值投资为什么能够持续战胜市场》