Kruskal 最小生成树(输出最小生成树的路径,权值的和) 参考poj 1258

Kruskal算法求解最小生成树 阅读详情

输入无向图的,矩阵存储格式,

package com.liang.poj;

import java.util.Scanner;

public class Test2485Kruskal {
	static int n = 0;
	static int[][] cin = null;
	static boolean[] visited = null;        //对顶点进行标记
	static int[][] brimCollection = null;   //边的集合
	static int index = 0;
	static int[] path = null;              //记录路径和路径边上的权值
	static int pathIndex = 0;

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while (scan.hasNext()) {
			n = scan.nextInt();
			cin = new int[n][n];
			visited = new boolean[n];
			brimCollection = new int[n * n - n][3];
			path = new int[n - 1];

			for (int i = 0; i < cin.length; i++) { // 初始化cin brimCollection
				for (int j = 0; j < cin[i].length; j++) {
					cin[i][j] = scan.nextInt();
					if (cin[i][j] != 0) {
						brimCollection[index][0] = i;
						brimCollection[index][1] = j;
						brimCollection[index++][2] = cin[i][j];
					}
				}
			}

			sort();

			path[pathIndex++] = 0;
			visited[brimCollection[0][0]] = true;
			visited[brimCollection[0][1]] = true;

			kruskal();
			
			for(int i=0; i<path.length; i++) {                       //对路径和权值进行输出
				System.out.print(brimCollection[path[i]][0] + " ");
				System.out.print(brimCollection[path[i]][1] + " ");
				System.out.println();
			}
			
			int sum = 0;
			for(int i=0; i<path.length; i++) {                       
				sum += brimCollection[path[i]][2];
			}
			System.out.println(sum);       //输出最小生成树,权值的和
			
		}
	}

	public static void kruskal() {      //克鲁斯卡尔算法
		int count = 1;
		for (int i = 1; i < brimCollection.length; i++) {
			int a = brimCollection[i][0];
			int b = brimCollection[i][1];
			if ((!visited[a] && visited[b]) || (visited[a] && !visited[b])) {
				visited[a] = true;
				visited[b] = true;
				path[pathIndex++] = i;
				i = 0;
				count ++ ;
			}
			if(count == n) {
				break;
			}
		}
	}

	public static void sort() {            //对所有的边按权值进行排序
		for (int i = 0; i < brimCollection.length; i++) {
			if (brimCollection[i][2] == 0) {
				break;
			}
			for (int j = i + 1; j < brimCollection.length; j++) {
				if (brimCollection[j][2] == 0) {
					break;
				}
				if (brimCollection[i][2] > brimCollection[j][2]) {
					exchange(i, j, 0);
					exchange(i, j, 1);
					exchange(i, j, 2);
				}
			}
		}
	}

	public static void exchange(int i, int j, int cos) {
		int x = 0;
		x = brimCollection[i][cos];
		brimCollection[i][cos] = brimCollection[j][cos];
		brimCollection[j][cos] = x;
	}

}

由坐标矩阵求最小生成树图形(原创无错可运行) 由坐标矩阵求最小生成树图形(原创无错可运行) 可改为邻接矩阵 老师作业题 立即下载

相关推荐

最小生成树最小生成树最小生成树最小生成树最小生成树

最小生成树最小生成树最小生成树最小生成树最小生成树

Networking POJ - 1287 (最小生成树 裸题)

Networking POJ - 1287 存在许多点和点与点之间的路径,路径长度不一,点到点之间可能存在多条路径。挑选部分路径使得所有点连通且总路径长度最小。 Input 多样例输入。每个样例都保证有解。 每个样例的第一行有两个整数,P(点的个数),R(点与点之间的路径总数)。 接下来的R行输入路径,每行含3个整数,前两个数表示连接的两个点,第三个数表示路径长度。 当P为0时输入结束。样例与样...

Suprit's blog 765

24GHz雷达DIY呼吸监测仪:用树莓派+TI IWR6843搭建生命体征检测系统(附Python代码)

本文详细介绍了如何利用树莓派和TI IWR6843毫米波雷达模块DIY非接触式呼吸监测仪。通过硬件选型、信号处理流水线设计和实时可视化系统搭建,实现高精度的生命体征检测,特别适合医疗健康和运动监测场景。附带的Python代码帮助开发者快速复现该系统。

rl6adventurer的博客 986

Kruskal算法实现最小生成树(C++实现)

Kruskal算法简单讲解。

Curz酥的博客 4646

非球面检测

摘要:非球面镜检测主要采用干涉法,包括零位补偿和非零位补偿两种方式。零位补偿通过透镜组完全校正像差,精度达1%波长,但设计复杂成本高;非零位补偿利用部分像差补偿降低波前斜率,适用于规则非球面。折射-衍射混合补偿镜能同时校正多种像差。实际检测中可采用物理补偿镜或动态CGH加载方案,光路设计需运用坐标断点和多重结构技术实现复杂光路建模。不同方法各具优势,需根据检测需求选择合适方案。

Zhaxibamao的博客 2114

描述符链表(Descriptor Chain)是什么?

描述符链表是硬件加速数据传输的核心数据结构,通过链式描述符(包含地址、长度、控制标志等)实现DMA自动批量处理,显著降低CPU负载。其工作原理为:CPU初始化链表后,硬件按序处理每个描述符,完成自动跳转与中断通知。在网卡收包、NVMe存储等场景中应用广泛,优势包括批处理、低延迟和灵活调度。需注意内存对齐、缓存一致性等实现细节,优化手段包括预分配描述符池、环形缓冲区等。该技术是网络/存储领域提升吞吐量的关键方案。

guigenyi的专栏 778

利用Kruskal算法求网的最小生成树,输出构造生成树过程的连通分量,以文本形式输出生成树中各条边路径,以及其权值。

利用Kruskal算法求网的最小生成树,输出构造生成树过程的连通分量, 以文本形式输出生成树中各条边路径,以及其权值。 /* 利用Kruskal算法求网的最小生成树,输出构造生成树过程的连通分量, 以文本形式输出生成树中各条边路径,以及其权值。 */ #include<algorithm> #include<stdio.h> #include <string.h> using namespace std; int dep[1001];//用于回溯的数组 st.

qq_47991812的博客 726

Flutter模块打包AAR集成Android原生项目实践

跨平台开发框架Flutter通过将UI组件渲染为原生代码实现高性能表现,其核心优势在于一套代码可同时运行在iOS和Android平台。在工程实践中,将Flutter模块打包为AAR(Android Archive)进行集成,成为混合开发的主流方案。这种方案既保留了原生项目的稳定性,又能渐进式引入Flutter的高效开发特性。通过配置MethodChannel实现原生与Dart代码通信,开发者可以灵活控制Flutter引擎生命周期,优化内存占用和渲染性能。对于电商、社交等需要快速迭代的业务场景,该方案能显著提

weixin_34025051的博客 400

最小生成树-Kruskal算法及代码实现(C语言)

#include<stdio.h> #include<stdlib.h> #include<math.h> int Find(int s[],int num){ for(;s[num]>=0;num=s[num]); return num; } void Union(int s[],int root1,int root2){ s[root2]=root1; } int main(){ int n=5; int map[5][...

zhan_qian的博客 4563

手把手教你用DSP28335的PWM移相功能搞定双有源桥DAB(附完整代码)

本文详细解析了DSP28335的PWM移相功能在双有源桥DAB中的应用,包括ePWM模块的配置、移相时序原理及实战代码。通过精确的移相控制,实现DAB的高效运行和软开关,适用于车载充电机、储能系统等场景。附完整代码,助力开发者快速掌握硬件级移相技术。

weixin_30632089的博客 423

Ros入门 (十)----激光雷达避障 简易实现

本篇文章通过订阅/scan话题获取障碍物的距离信息,达到避障目的,提供部分代码,仅供参考。

weixin_51157015的博客 1万+

最小生成树及扩展应用

最小生成树,最小瓶颈树,次小生成树

EQUINOX1的博客 2653

一台NAS两个系统:飞牛nas上完美运行群晖DSM?(飞牛nas+群晖nas套娃安装实操)

想在飞牛NAS上体验群晖DSM系统?💡 本文详细记录了飞牛nas上部署群晖的完整过程,从镜像转换到系统安装,每一步都有详细说明 🖥️,让你在不增加硬件成本的情况下,轻松实现一套硬件、多种系统的灵活部署 ✅

XiaoqiangClub的博客 2385

图论--最小生成树和最短路1

图论的经典问题。第一部分

Zsss的博客 2660

【GPFS专题5】---IBM Spectrum Scale (GPFS) 日常运维命令大全

掌握这些命令是有效管理 GPFS 集群的基础。实际生产环境中,建议结合自动化脚本和监控系统(如 IBM Storage Insights)实现高效运维。定期备份配置、监控性能指标,并进行灾备演练,是保障数据安全和系统稳定的关键。

jundao1997的专栏 841

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最小生成树模板 POJ——1258

最小生成树是一个比较简单数据结构,形成最小生成树的方式有两种。 最小生成树是有图生成树,保证树的每条边的权值之和最小的生成树就叫做最小生成树,这一类的题目起初比较基础,主要是熟悉模板,POJ 1258 也就是这样的题目,非常适合刚刚学习的人。 两种方法的思路分别是找边和找点,简单点说就是,找到全集中最小的边(或者是距离最近的点),将他们连接起来,最终形成的树就是最小生成树。 第一种方法,pr...

weixin_40488730的博客 511

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

真正的Kruskal poj 1258(应用了并查集)

package com.liang.poj; import java.util.Scanner; public class Test1258Kruskal { static int n = 0; static int[][] cin = null; static int[][] result = null; static int index = 0; static

三易专栏 472

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

poj1258_kruskal

/* Kruskal算法简述 假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林。之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一

charspan 338

最小生成树模板(POJ 1258-prime+HDU 1233 Kruskal为例)

POJ 1258Prime(类似于dijkstra)#include &lt;cstdio&gt; #include &lt;cstring&gt; #define INF 0x3f3f3f3f const int MAXN =100+100; int mp[MAXN][MAXN]; int n; /* * 数组tree[]用来记录最小生成树的节点 * 数组lowdis[]记录从起点到其...

咸鱼有梦想 276

最小生成树 之 kruskal 算法 Agri-Net POJ - 1258

原题:      Agri-Net     Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course.     F...

error311的博客 254

Agri-Net(POJ 1258)(裸最小生成树)(Prime算法+Kruskal算法)

Agri-Net(POJ 1258)(裸最小生成树)(Prime算法+Kruskal算法)

Ema1997的博客 607

最小生成树 2016.7.20

1、UVa 10048 Audiophobia 参考:http://blog.youkuaiyun.com/shuangde800/article/details/7985085 题意: c1到c2的每条路径的声强为这条路径所包含的边的最大权值 求c1到c2的声强最小的一条路径的声强 解题思路: 模拟kruskal的过程 先将所有的边按权值递增进行排序,再一条边一条边的加 每加入一

追风蹑影 356

poj 1258Agri-Net(prime,Kruskal )

prime #include #include using namespace std; int a[101][101];//矩阵表示图 int lowcost[101], closest[101];//初始都为0 int Prim(int n) { int i, j, k,

tanhaiyuan 761

“kuangbin带你飞”专题计划——专题六:最小生成树(MST)

系统学习总结最小生成树 ...

I_have_a_world的博客 339

(kruscal12.2.1)POJ 1258 Agri-Net(使用kruscal来计算最小边权值)

#include #include #include #include using namespace std; struct edge{ int begin; int end; int weight; }; const int maxn = 110; int father[maxn]; edge e[maxn*maxn]; int map[maxn][maxn]; int

黄俊东的专栏 1208

最小生成树(Minimum Spanning Tree)——Prim算法与Kruskal算法+并查集

最小生成树——Minimum Spanning Tree,是图论中比较重要的模型,通常用于解决实际生活中的路径代价最小一类的问题。我们首先用通俗的语言解释它的定义: 对于有n个节点的有权无向连通图,寻找n-1条边,恰好将这n个节点相连,并且这n-1条边的权值之和最小。 对于MST问题,通常常见的解法有两种:Prim算法 或者 Kruskal算法+并查集 对于最小生成树,一定要注意其定义...

weixin_34220834的博客 219
上一篇: Prim最小生成树(求,生成树中权值的和,最大权值,最小权值) 参考poj1258 2485
下一篇: poj 2349
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值