最小生成树 之 kruskal 算法 Jungle Roads POJ - 1251

【图论-MST】POJ 1251 Jungle Roads 丛林中的道路,最小生成树,Kruskal算法 Jungle RoadsTime Limit: 2 Seconds      Memory Limit: 65536 KBThe Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages so... 阅读详情

原题

      Jungle Roads


地图显示了现在使用的所有道路以及每月维护这些道路的费用。他们每个月能花多少钱,维护连接所有村庄的道路。这些村庄在上面的地图上标着 A 到 I。右边的地图显示了最便宜的道路,每月216个  aacms(货币单位,我也不知道哪国的)。

输入

输入由一到100个数据集组成,最后一行只包含0。每个数据集开始时只包含一个数字n,即村庄数,1

输出量

每个数据集的输出为每一行一个整数:每个月用于维护连接所有村庄的公路系统的最低成本。

样本输入

9
A 2 B 12 I 25
B 3 C 10 H 40 I 8
C 2 D 18 G 55
D 1 E 44
E 2 F 60 G 38
F 0
G 1 H 35
H 1 I 35
3
A 2 B 10 C 40
B 1 C 20
0

样本输出

216
30

题意: 在所有道路中选取权值最小的道路,组成一个通路

解题思路: 将每条边的权值最小的按从小到大排序,将那条边所涉及的点归并为一个集合,                       用并查集思想。

#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int fa[35];
int m;
struct node{
	int s;	  // 起始点 
	int e;	 // 终止点 
	int w;    // 权值,也就是道路的维修费 
}a[505];
bool cmp(node a,node b){   // 将结构体中权值按从小到大排序  
   return a.w < b.w;
}
int get(int i){       // 此处并查集,必须进行路径压缩 
   if(fa[i] != i){
		fa[i] = get(fa[i]);
	}
	return fa[i];
}
void kruskal(){
	sort(a,a+m,cmp);
	int ans = 0;
	for(int i = 0;i < m;i++){   // 循环将起始点和终止点压缩进一个集合 
		int x = get(a[i].s);
		int y = get(a[i].e);
		if(x != y){
			fa[x] = y;
			ans += a[i].w;   // 计算求和 
		}
	}
	printf("%d\n",ans);
}
int main(){
	int n;
	while(scanf("%d",&n) && n){
		char ch1,ch2;
		int x,y;
		for(int i = 0;i < n;i++){
			fa[i] = i;
		}
		m = 0;n--;
		while(n--){
			cin >> ch1 >> x;
			while(x--){
				cin >> ch2 >> y;
				a[m].s = ch1 - 'A';  // 将字母转换为数字,便于管理 
				a[m].e = ch2 - 'A';
				a[m].w = y;
				m++;
			}
		}
		kruskal();
	}
	return 0;
} 

 新手,写得不好;大神如果觉得不好,还请多多指教,悉心接受教诲;

  有看不懂的留言评论我会回复;

 

poj 1251 Jungle Roads n个城市之间铺设光缆,铺设光缆费用很高且各个城市之间铺设光缆的费用不同。如果设计目标是使这n个城市之间的任意两个城市都可以直接或间接通信,并且要使铺设光缆的费用最低,这样的问题就是一个求最小生成树的问题。解决这个问题的方法就是在有n个城市结点、n(n-1)/2条费用不同的边构成的无向连通图中找出最小生成树。 最小生成树的应用相当广泛,是图论中比较基础的算法。解决最小生成树有两种算法 阅读详情

相关推荐

手把手教你:在openEuler 22.03上离线搞定OpenSSH 9.8升级(CentOS 7.9通用)

本文详细介绍了在openEuler 22.03和CentOS 7.9系统上离线升级OpenSSH 9.8的完整流程,包括准备工作、离线包获取、安装步骤、服务管理及回滚方案。特别针对无外网环境的企业服务器,提供安全可靠的离线升级解决方案,帮助运维人员有效提升系统安全性。

weixin_30682415的博客 192

Jungle Roads丛林道路(最小生成树Prim&&Kruskal算法)

Jungle Roads丛林道路 The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expe...

m0_58245389的博客 1313

TPL5010硬件看门狗电路

在做一些采集频率很低的产品的时候,会考虑电池供电,比如表、电气表等,为了控制功耗,往往会在设备不需要工作的时候让它进入低功耗模式。为了设备的稳定性,避免死机后无法恢复,必须配置看门狗,一般的看门狗芯片,喂狗间隔时间是几秒钟。这样在喂狗和低功耗之间就产生了一个矛盾,频繁的喂狗就需要频繁的醒过来,这样功耗就很难做到很低。这颗看门狗芯片,特别适合上面的应用。2小时的间隔意味着主控芯片每2小时醒过来喂狗一次即可,而在2.5V供电的情况下,功耗仅仅35nA,几乎可以忽略不计。

zxm8513优快云博客 3306

Jungle Roads(最小生成树、并查集)

不认识的单词: relent:发慈悲、收敛缓和 relentless:无情 elder:老大 题目描述: The Head Elder of( the tropical island)( of Lagrishan) has a problem. 热带岛的老大有个问题 A burst (of foreign aid money )was spent (on...

bijingrui的博客 314

solidworks vba二次开发配合问题

solidworks vba二次开发配合问题二次开发装配的步骤 二次开发装配的步骤 solidworks可以使用宏录制配合过程从而得到配合的vba代码,步骤如下: 1.选择两个配合的面(点、线等) 2. 建立配合 例如将两个圆柱面同心(图中高亮): 配合后 我们看一下宏录制的代码: Sub main() //激活solidworks接口 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc //选择两个圆柱面,注意此处是根据坐标选择,不

Alejandro123的博客 3404

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

Jungle Roads(最小生成树)

The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to maintain...

with_wine的博客 340

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 374

Jungle Roads (最小生成树)

The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly,...

The student way 231

华为od 面试八股文_测试/测试开发_01_含答案

华为od面试八股文_测试/测试开发_01_含答案

MISAYAONE的博客 3815

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 440

Jungle Roads(POJ-1251)

POJ - 1251 传送门 Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is.

Silence的博客 354

凝聚态物理新引擎:AI 驱动材料预测与相变识别大突破

摘要:本文深入探讨 AI 在凝聚态物理中的创新应用。在材料性质预测方面,AI 借助数据收集、特征提取和模型训练,能依据材料微观信息准确预估其宏观性质,以石墨烯为例验证了高效性。对于拓扑相变识别,AI 通过分析量子力学数据,利用机器学习算法判别相变节点,助力拓扑绝缘体研究。尽管面临数据质量、模型可解释性等挑战,但未来多模态数据融合、可解释 AI 等发展方向,将推动 AI 与凝聚态物理深度融合,助力探索物质奥秘与新材料研发。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1826

【题解】POJ - 1251 Jungle Roads(最小生成树,Prim 算法,Kruskal 算法)

POJ - 1251 Jungle Roads 题目描述 The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is

Winsoul Blog 644

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

poj1251 Jungle Roads 最小生成树,kruskal算法

题目链接:http://poj.org/problem?id=1251 思路:这道题和poj125

basement_boy 590

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ - 1251 Jungle Roads(最小生成树算法:Kruskal和Prim算法)

题目链接:https://vjudge.net/contest/351693#problem/E Description The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages s...

zaiyang遇见 495

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

POJ 1251 Jungle Roads (最小生成树)

POJ 1251 Jungle RoadsDescription The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jung

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 2981

POJ-1251 Jungle Roads (最小生成树+ Kruskal算法)

POJ-1251 Jungle Roads (最小生成树+ Kruskal算法)Jungle RoadsTime Limit: 1000MS Memory Limit: 10000K   DescriptionThe Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money ...

碳酸钙的01妖精的博客 409

poj1251 Jungle Roads 最小生成树kruskal算法实现

题目:岛上的居民要修最短的路来使得费用最少分析:实际上是求最小生成树,可以用prim算法和kruskal算法,基于刚学kruskal算法,以下是用kruskal算法做的。 kruskal算法的思想是:先把所有的边按照非降序排列,从而观察每条边是否能与以前的边组成环,能的话就不选,不能的话就选择,而判断是否组成环路的话可以通过使用并查集实现 并查集的思想是:{1,2,3},{4,5},{6,7,...

weixin_30426879的博客 141

POJ-1251-Jungle Roads-最小生成树-Kruskal算法

<br />题意<br />给定一个图,求其最小生成树。<br />解决<br />参考《算法导论》里面Kruskal算法的讲解,使用“并查集”这种数据结构,去生成最小生成树。<br />心得<br />这道题太爽了,一次就AC了。原因是由于之前在解题时写过并查集,现在直接套用却可,省了不少功夫。关于并查集,还可参考“POJ 1611 The Suspects 解题报告”。<br />代码<br />#include <algorithm> #include <iostream> using names

Leo的博客 1136

kuangbin 最小生成树专题 - POJ - 1251 Jungle Roads (Kruskal算法 模板题)

Kruskal算法附上模板 Kruskal算法(稀疏图) 基本思路: ① 将所有边按权重从小到大排序 时间复杂度 O(mlogm)O(mlogm)O(mlogm) ② (并查集思想) 枚举每条边 u — v,权重是w。 如果u,v不连通,将这条边加到集合中 只需要存边即可,不需要存邻接矩阵和邻接表 附上模板 int n, m; // n是点数,m是边数 int p[N]; // 并查集的父节点数组 struct Edge // 存储边 { int a, b, w;

ACM-ICPC 现役(铜牌) Codeforces Rating: 2172 388

ZOJ 1406 POJ 1251 Jungle Roads 丛林中的道路,最小生成树,Kruskal算法

纯求最小生成树,注意输入的处理。

一蓑烟雨 1630

POJ - 1251 Jungle Roads 最小生成树Kruskal算法(模板)

A - Jungle Roads POJ - 1251 Kruskal算法比Prim更好写#include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;algorithm&gt; #define maxn 110 #define maxm 10010 using namespace std; int n;//点的个数 int m;/...

南极亚拉的博客 293

最小生成树基础与习题

目录 图的几个基础概念 Kruskal算法 算法思想 模板 Prim算法 算法思想 模板 例题 A.POJ-1251 Jungle Roads B.POJ-1287 Networking C:POJ-2031 Building a Space Station D:ZOJ-1586 QS Network E:POJ-2349 Arctic...

weixin_43870697的博客 3105

POJ 1251 Jungle Roads (最小生成树 Kruskal克鲁斯卡尔算法)

#include #define MAX_ROADS 76 #define MAX_VILLAGES 27 struct ROAD{ int start; int end; int cost; }; ROAD roadArray[MAX_ROADS]; int numOfRoads; int roadNum; int numOfVillages; int parent[MAX_V

TiuTiu Zone 471
上一篇: 并查集 通畅工程 HDU - 1232
下一篇: 最大生成树 之 kruskal Bad Cowtractors POJ - 2377
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值