HDU1879--继续通畅工程--最小生成树--并查集

Kruskal算法并查集和最小堆实现 <br />Kruskal算法的基本思想是,将图中的节点分类,分成两个集合,分别表示成S和T其中S是不在生成树中的节点集合,T是在生成树中的节点集合。刚开始的时候,T中只有源节点一个节点。同时将图中的所有边按照权值排序。然后每次向图中添加一条权值最小的边,同时满足,这条边的一个节点在S中一个节点在T中。这样循环,直到树中有了n-1条边为止。实现的代码如下:<br /> <br /> <br /> <br />/**<br />这边使用并查集实现Kruskal算法,并没有使用最小堆,代替的使用了一个排序的方法 阅读详情

Description

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
 

Input

测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。

当N为0时输入结束。
 

Output

每个测试用例的输出占一行,输出全省畅通需要的最低成本。
 

Sample Input

3 1 2 1 0 1 3 2 0 2 3 4 0 3 1 2 1 0 1 3 2 0 2 3 4 1 3 1 2 1 0 1 3 2 1 2 3 4 1 0
 

Sample Output

3 1 0
此题和HDU1233基本上一样。先按公路的权值排序后,并查集处理即可。已建成的公路就将其价格置0
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 108
int father[maxn];
struct Edge
{
	int u,v,value;
}edge[maxn*(maxn-1)];
int find(int x)
{
	if(x==father[x])
	{
		return x;
	}
	return find(father[x]);
}
bool cmp(Edge a,Edge b)
{
	return a.value>=b.value?0:1;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		int mincost=0;
		for(int i=1;i<=n;i++)
		{
			father[i]=i;
		}
		int k=n*(n-1)/2;
		int state;
		for(int i=1;i<=k;i++)
		{
			scanf("%d%d%d%d",&edge[i].u,&edge[i].v,&edge[i].value,&state);
			if(state)
			{
				edge[i].value=0;
			}
		}
		sort(edge+1,edge+k+1,cmp);
		for(int i=1;i<=k;i++)
		{
			if(find(edge[i].u)!=find(edge[i].v))
			{
				mincost+=edge[i].value;
				father[find(edge[i].v)]=edge[i].u;
			}
		}
		cout<<mincost<<endl;
	}
	return 0;
}

UE5 C++教程(一、基本结构) 虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。 阅读详情

相关推荐

静态时序分析(STA)_深入解析Data to Data Checks的零周期挑战

本文深入解析了静态时序分析(STA)中Data to Data Checks的核心概念与零周期挑战。重点探讨了当Setup要求值超过时钟周期时,工具如何调整发射沿,并导致Hold检查的发射与捕获沿“分裂”这一反直觉现象。文章通过案例详细解读了时序报告,并提供了通过调整约束或接受多周期保持两种策略来应对这一挑战,帮助工程师正确理解和处理此类复杂时序检查。

weixin_29204205的博客 351

[贪心经典算法]Kruskal算法

Kruskal算法的高效实现需要一种称作并查集的结构。我们在这里不介绍并查集,只介绍Kruskal算法的基本思想和证明,实现留在以后讨论。 Kruskal算法的过程: (1) 将全部边按照权值由小到大排序。(2) 按顺序(边权由小到大的顺序)考虑每条边,只要这条边和我们已经选择的边不构成圈,就保留这条边,否则放弃这条边。算法 成功选择(n-1)条边后,形成一棵最小生成树,当然如果算法无法选择出...

weixin_30527143的博客 1107

AD7768与STM32F439的硬件设计避坑指南:如何优化高精度ADC系统的电源与PCB布局

本文详细解析了AD7768与STM32F439在高精度ADC系统硬件设计中的关键问题与优化方案。从电源系统设计、PCB布局到基准电压选型,提供了实用的避坑指南和实测数据,帮助工程师提升系统性能至110dB动态范围。特别强调了SPI信号布线和电源滤波对ADC精度的重要影响。

sugar的博客 735

Hdu 1879 - 继续通畅工程

最小生成树 - prim算法   题意:n为村庄数,n*(n-1)/2 为村庄之间的路数,求最小的路的总长度。加入的变化时判断该路是否已经建成,若是则将map[][]置为0;若不是,则将map[][]置为该路的长度。   AC代码: #include #include #include const int max = 0x7ffffff; int map[105][105], v

Chuck的博客 655

JW01二氧化碳传感器实战:5分钟搞定Arduino环境监测系统(附完整代码)

本文详细介绍了如何使用JW01二氧化碳传感器与Arduino快速搭建环境监测系统。通过简单的硬件连接和完整的代码示例,读者可以在5分钟内实现CO2浓度实时监测,并了解数据解析、常见问题解决及进阶应用扩展。JW01传感器的高精度和易用性使其成为创客和嵌入式开发者的理想选择。

kite3的博客 382

LLC谐振变换器设计实战:从工作原理到参数设计与调试

开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验

weixin_34129696的博客 561

SDUT最小生成树(并查集实现Kruskal算法)

题目描述 Problem Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。 第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n &lt;= 100, m &lt;=10000) 剩下...

MirrorN的博客 525

别再死记硬背公式了!用Unity ShaderGraph从零实现一个皮肤SSS效果(附完整节点图)

本文详细介绍了如何利用Unity ShaderGraph零代码实现皮肤次表面散射(SSS)效果,包括背光透射(BTDF)和表面散射(BSSRDF)的核心原理与节点构建方法。通过可视化工具,技术美术师和Shader初学者可以直观理解光线在皮肤组织中的散射行为,快速创建真实的皮肤材质效果,适用于游戏角色渲染等场景。

weixin_30838873的博客 590

杭电1233——还是通畅工程~简单最小生成树问题

这题,典型的最小生成树问题,可以用Kruskal算法来实现,配合着并查集来高效求解。 先将各边按权值进行从小到大排列。遍历一个各边便可求解,时间复杂度为O(|E|log|V|),其中E为边的个数,V为顶点数。 下面是AC代码,代码中有注释: #include #include #include using namespace std; class data

XD 811

Fast-LIO2代码解析 古月居

FAST-LIO,FAST-LIO2与FASTER-LIO - 古月居FAST-LIO2代码解析(一) - 古月居FAST-LIO2代码解析(二) - 古月居FAST-LIO2代码解析(三) - 古月居FAST-LIO2代码解析(四) - 古月居FAST-LIO2代码解析(五) - 古月居FAST-LIO2代码解析(六) - 古月居

li4692625的博客 2785

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 107

最小生成树kruskal算法(贪心+并查集+堆优化)

kruskal算法克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用(所选的边不能构成回路)的最小权植边。所以Kruskal算法的第一步是给所有的边按照从小到大的顺序排序。这一步可以直接使用库函数qsort或者sort。接下来从小到大依次考察每一条边(u,v)。具体实现过程如下:&lt;1&gt; 设一个有n个顶点的连通网络为G(V,E),最初先构造一个只有n个顶点,没有边的非连通图T={...

ReidSC的博客 2902

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真

本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储

amy_mhd的博客 124

hdu 1879 继续通畅工程(最小生成树)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1879 /************************************************************************/ /* hdu 继续畅通工程 最小生成树 题...

weixin_33953384的博客 147

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

继续畅通工程hdu1879

#include&amp;lt;iostream&amp;gt; #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstdlib&amp;gt; #include&amp;lt;string.h&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; int inf=0x3f3f3f3f; const

weixin_43331783的博客 208

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU1863 最小生成树 + kruskal + 并查集

畅通工程 Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 36156Accepted Submission(s): 16059 Problem Description 省政府“畅通工程”的目标是使全省任何两...

Become hunger become strong 428

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

最小生成树kruskal算法(并查集)

kruskal算法

小张的专栏 1151

继续畅通工程

题目描述    省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。输入描述:    测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1&lt; N &lt; 100 );随后...

qq_38030194的博客 1191

最小生成树+Kruskal算法 并查集的使用

题目:http://poj.org/problem?id=2349 题目大意:最小生成树找第k大边。 直接Kruskal就把最小生成树跑出来,找第k大边就ok。而我的模板并查集下标从1开始。但是我的点从0开始。导致WA了。 #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; #define LL long long const int maxn=...

H_ang的博客 301

B - 继续畅通工程

题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。 Input 测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1&lt; N &lt; 100 );随后的 N(N-...

qq_41998938的博客 779

最小生成树---kruskal模板(并查集优化)

题目描述 略 代码 #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;algorithm&gt; #define open(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout); #define close fclose(stdin)

笑面蘑菇的博客 418

Kruskal最小生成树(最小堆 + 并查集)

伪代码 邻接表储存MST /*图的邻接表结构定义*/ typedef struct ENode{ int v1, v2; int Weight; } * Edge; struct AdjVNode{ int AdjV; int Weight; AdjVNode *Next; }; typedef struct VNode{ AdjVNode *EdgeFirst; string D...

不导翁的博客 730

并查集&最小生成树Kruskal算法

杭电oj1233 还是畅通工程 Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input 测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( &...

hhdmw的博客 313

最小生成树(Kruskal算法)贪心算法 利用并查集

#include #include #include #include #include #include #include #include #include #include #include #include #define NUM 1000 #define maxint 10000000 #define INF 0x3f3f3f3f using namespace std; int

zhujianing的博客 886
上一篇: HDU1233--还是畅通工程--最小生成树--并查集
下一篇: HDU1269--迷宫城堡--深度优先搜索
SCUT_Pein
博客等级 码龄14年 54粉丝 480原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值