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

Ubuntu 20.04下Cube-Studio云原生平台单机部署全攻略(附避坑指南)

本文详细介绍了在Ubuntu 20.04系统上单机部署Cube-Studio云原生平台的完整流程,包括环境准备、Docker配置、Rancher与Kubernetes集群部署以及Cube-Studio核心组件安装。特别提供了官方文档未涵盖的实战技巧和常见问题解决方案,帮助开发者高效完成部署并避免常见陷阱。

weixin_29313423的博客 466

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

Kruskal算法简单讲解。

Curz酥的博客 4646

微信小程序 | 小程序开发

事实上,目前小程序在我们生活中已经随处可见(特别是这次疫情的推动,不管是什么岗位、什么年龄阶段的人,到哪都需要打开健康码)WePY是由腾讯开源的,一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。Mpvue是一个使用Vue开发小程序的前端框架,也是 支持 微信小程序、百度智能小程序,头条小程序 和 支付宝小程序;微信小程序、支付宝小程序、淘宝小程序、抖音小程序、头条小程序、QQ小程序、美团小程序等。,其他平台的小程序往往是平台本身的一些公司或者顺手开发的。

CoderHing的博客~ 1万+

决策树简介/PPT

最近给我们组新生讲了决策树的相关知识,以下是所做的PPT,参考了网络资源。

垃圾就应该待在垃圾桶里的博客 3796

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

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

qq_47991812的博客 726

DeepSeek跨会话协作指南:让AI成为你的「第二大脑」

通过DeepSeek的跨会话协作系统,用户实测工作效率提升63%。

紫夜若涵的博客 1481

最小生成树-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

海康威视嵌入式最全面试题及参考答案(3万字长文)

主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。

大模型大数据攻城狮的专栏 1765

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

最小生成树及扩展应用

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

EQUINOX1的博客 2653

华为od 面试八股文_JAVA语言_01_含答案

华为od 面试八股文_JAVA语言_01_含答案

MISAYAONE的博客 4318

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

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

Zsss的博客 2660

MATLAB - ROS 2 工具箱入门教程

ROS 工具箱提供了一个连接 MATLAB® 和 Simulink® 与机器人操作系统(ROS 和 ROS 2)的接口。利用该工具箱,您可以设计 ROS 节点网络,并将 MATLAB 或 Simulink 生成的 ROS 节点与现有的 ROS 网络相结合。工具箱包括 MATLAB 函数和 Simulink 块,可通过记录、导入和回放 rosbag 文件来可视化和分析 ROS 数据。您还可以连接到实时 ROS 网络,访问 ROS 消息。

机器人控制与仿真应用 3068

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最小生成树模板 POJ——1258

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

weixin_40488730的博客 511

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

真正的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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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、付费专栏及课程。

余额充值