hduoj-1233 还是畅通工程(Prim + Kruskal)

最大权二分匹配—KM算法入门 && 模板 最大权二分匹配问题就是给二分图的每条边一个权值,选择若干不相交的边,得到的总权值最大。解决这个问题可以用KM算法。理解KM算法需要首先理解“可行顶标”的概念。可行顶标是指关于二分图两边的每个点的一个值lx[i]或ly[j],保证对于每条边w[i][j]都有lx[i]+ly[j]-w[i][j]>=0。如果所有满足lx[i]+ly[j]==w[i][j]的边组成的导出子图中存在一个完美匹配,那么这个 阅读详情

还是畅通工程

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 22226    Accepted Submission(s): 9939


Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
 

Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
 

Output
对每个测试用例,在1行里输出最小的公路总长度。
 

Sample Input
3 1 2 1 1 3 2 2 3 4 4 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0
 

Sample Output
3 5
Hint
Hint
Huge input, scanf is recommended.
 

Prim(邻接矩阵,  134ms):
#include <stdio.h>
#include <string.h>
#define N 100

int n;
int map[N][N], low[N];
bool vis[N];

void Init(){
	memset(vis, 0, sizeof(vis));
	for(int i = 1; i <= n; i ++){
		low[i] = 0xfffffff;
		for(int j = 1; j <= n; j ++){
			map[i][j] = 0xfffffff;
		}
	}
}

int Prim(int choose){
	low[choose] = 0;
	vis[choose] = 1;
	for(int i = 1; i <= n; i ++){
		low[i] = map[choose][i];
	}
	
	int ans = 0;
	for(int j = 1; j < n; j ++){
		int Min = 0xfffffff;
		for(int i = 1; i <= n; i ++){
			if(!vis[i] && Min > low[i]){
				Min = low[i];
				choose = i;
			}
		}
		vis[choose] = 1;
		ans += Min;
		for(int i = 1; i <= n; i ++){
			if(!vis[i] && low[i] > map[choose][i]){
				low[i] = map[choose][i];
			}
		}
	}
	
	return ans;
}

int main()
{
	int start, end, len;
	while(scanf("%d", &n), n){
		Init();
		for(int i = 0; i < n * (n - 1) / 2; i ++){
			scanf("%d%d%d", &start, &end, &len);
			if(map[start][end] > len){
				map[start][end] = map[end][start] = len;
			}
		}
		
		int ans = Prim(1);
		
		printf("%d\n", ans);
	}
	
	return 0;
}


Prim(邻接表,  250ms):
#include <stdio.h>
#include <string.h>
#include <vector>
#define N 100

using namespace std;

struct Node{
	int next;
	int len;
};

int n;
int low[N];
bool vis[N];
vector<Node>q[N];

void Init(){
	memset(vis, 0, sizeof(vis));
	for(int i = 1; i <= n; i ++){
		low[i] = 0xfffffff;
		q[i].clear();
	}
}

int Prim(int choose){
	low[choose] = 0;
	vis[choose] = 1;
	for(int i = 0; i < q[choose].size(); i ++){
		int next = q[choose].at(i).next;
		int len = q[choose].at(i).len;
		low[next] = len;
	}
	
	int ans = 0;
	for(int j = 1; j < n; j ++){
		int Min = 0xfffffff;
		for(int i = 1; i <= n; i ++){
			if(!vis[i] && Min > low[i]){
				Min = low[i];
				choose = i;
			}
		}
		vis[choose] = 1;
		ans += Min;
		for(int i = 0; i < q[choose].size(); i ++){
			int next = q[choose].at(i).next;
			int len = q[choose].at(i).len;
			if(!vis[next] && low[next] > len){
				low[next] = len;
			}
		}
	}
	
	return ans;
}

int main()
{
	Node nw;
	int start, end, len;
	while(scanf("%d", &n), n){
		Init();
		for(int i = 0; i < n * (n - 1) / 2; i ++){
			scanf("%d%d%d", &start, &end, &len);
			nw.next = end;
			nw.len = len;
			q[start].push_back(nw);
			nw.next = start;
			q[end].push_back(nw);
		}
		
		int ans = Prim(1);
		
		printf("%d\n", ans);
	}
	
	return 0;
}


Kruskal(邻接表,  296ms):
#include <stdio.h>
#include <queue>
#define N 110

using namespace std;

struct Node{
	int start;
	int end;
	int len;
	friend bool operator < (const Node& a, const Node& b){
		return a.len > b.len;
	}
};

int n;
priority_queue<Node>q;
int Father[N];

void Init(){
	for(int i = 0; i <= n; i ++){
		Father[i] = i;
	}
}

int GetFather(int cur){
	return Father[cur] == cur ? cur : Father[cur] = GetFather(Father[cur]);
}

bool Join(int start, int end){
	int root1 = GetFather(start);
	int root2 = GetFather(end);
	
	if(root1 == root2){
		return 0;
	}
	else{
		Father[root1] = root2;
		return 1;
	}
}

int Kruskal(){
	int ans = 0;
	while(!q.empty()){
		Node cur = q.top();
		q.pop();
		
		if(Join(cur.start, cur.end)){
			ans += cur.len;
		}
	}
	
	return ans;
}

int main()
{
	Node nw;
	int start, end, len;
	while(scanf("%d", &n), n){
		Init();
		for(int i = 0; i < n * (n - 1) / 2; i ++){
			scanf("%d%d%d", &start, &end, &len);
			nw.start = start;
			nw.end = end;
			nw.len = len;
			q.push(nw);
		}
		
		int ans = Kruskal();
		
		printf("%d\n", ans);
	}
	
	return 0;
}


pg lib的信息及产生pg lib的三种方法 pg lib相比basic lib会多几方面pg 信息。除了pg arc(pg pin)以外,liberty还提供电压值,以及pmk cell的power_down_function功能相关信息。1.电压值除了常见的primary pg还有secondary pg和衬底。2.pg arc后端需要去做redhawk功耗分析,需要pg liberty提供pg arc,如果没有pg arc就需要手动去写custom lib代替3.pmk cell的power_down_function。 阅读详情

相关推荐

从零开始:使用Remix和MetaMask在测试网部署智能合约的完整指南

本文提供了一份完整的指南,教你如何使用Remix和MetaMask在测试网上部署智能合约。从环境搭建、获取测试网代币到编写和部署合约,再到与合约交互和连接Python后端,涵盖了智能合约开发的各个环节。特别适合初学者快速上手区块链开发,同时介绍了安全注意事项和调试技巧。

weixin_29019241的博客 474

hdu 1233 畅通工程 三

http://acm.hdu.edu.cn/showproblem.php?pid=1233 Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。

ACM,再见! 3391

GDSFactory环境配置实战:Python、KLayout与PDK协同指南

GDSFactory是面向光子集成电路(PIC)设计的Python参数化建模框架,其核心价值在于将版图生成从手动绘图升维为可编程、可复现、可集成CI/CD的工程实践。它依赖Python科学计算生态(如NumPy)、EDA可视化工具KLayout的深度Python绑定,以及工艺厂PDK的标准化接入,三者构成‘计算-几何-工艺’技术闭环。典型应用场景包括教学级SiEPIC PDK快速原型、工业级AIM Photonics流片准备,以及自动化DRC与光学仿真流水线构建。本文聚焦GDSFactory落地中最关键也最

weixin_30983353的博客 368

ZZULIOJ--1233:单词倒置

时间限制: 1 Sec 内存限制: 128 MB 提交: 493 解决: 204 [状态] [提交] [命题人:外部导入] 题目描述 最近birdfly收到了女友的几份信件,为了只要他俩知道信件的秘密,女友把信件里的每个单词都倒置了。这样只有birdfly将它们倒置过来才能明白女友的心思了。为此birdfly还特意请你编写程序帮他解决一下这个问题。 简单起见假定每封信只包含英文单词和空格,每两...

CoIorful的博客 843

保姆级教程:用MATLAB搞定双目相机标定,从导入图片到参数解读全流程

本文提供了一份详细的MATLAB双目相机标定全流程指南,涵盖从图片准备到参数解读的每个环节。重点讲解了棋盘格选择、拍摄技巧、MATLAB工具箱设置及参数优化,帮助读者避免常见错误并提升标定精度。特别适合机器人导航、三维重建等领域的开发者。

weixin_33737134的博客 428

滴滴数据分析80道面试题及参考答案

常见的模型评价指标有准确率、召回率、F1 值、均方误差、均方根误差、R 方等。准确率是指模型预测正确的样本数占总样本数的比例,它反映了模型预测的准确性。召回率是指模型预测为正例的样本中实际为正例的比例,它衡量了模型对正例的捕捉能力。F1 值是准确率和召回率的调和平均数,综合考虑了两者的平衡。均方误差是预测值与真实值之差的平方的平均值,它衡量了模型预测值与真实值的平均偏离程度。均方根误差是均方误差的平方根,与均方误差类似,但更直观地反映了误差的大小。

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

HDU - 1233 还是畅通工程

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

sortmin的博客 414

MFC属性网格控件(CMFCPropertyGridCtrl)完全指南:构建专业属性编辑界面

本文详细介绍了MFC中的CMFCPropertyGridCtrl控件的使用方法。主要内容包括:控件基础用法(初始化、添加属性、事件处理)、高级设置(自定义外观、创建属性类型、动态更新)、派生类实现(自定义绘制、搜索过滤功能)、界面集成技巧(对话框布局、属性编辑器)以及实际应用示例。文章重点讲解了如何通过继承和自定义实现复杂功能,并提供了性能优化、多语言支持等最佳实践方案。该控件适用于需要大量参数配置的应用程序,能够创建类似Visual Studio属性窗口的专业界面。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 154

题目66:畅通工程

//http://ac.jobdu.com/problem.php?cid=1040&pid=65分析:初始时,每个节点都是孤立的连通分量,当读入边时,将边的两个顶点所在集合合并,表示这两个集合的所有节点已经连通。最后存在多少棵树,就是多少个连通分量 #include int Tree[1000]; //tree[i]表示结点i的双亲

zz的专栏 387

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1243

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4348

2007年浙大研究生复试机试真题-EXCEL排序

浙大复试,ACM,算法

犇叔的博客 891

读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截

摘要 403 Forbidden 错误表明服务器理解请求但拒绝执行,通常与权限或访问控制有关。当错误信息显示 "blocked by UCON" 时,说明请求被 SAP 体系中的统一连接管控框架拦截。UCON 采用白名单机制限制外部调用,通过记录、评估、强制三阶段流程实施管控。常见触发场景包括 HTTP 服务与通信场景配置不一致、白名单未更新等。排查时应通过 DevTools 确认服务器响应,使用 curl 排除浏览器干扰,并比较不同环境的行为差异。解决方案通常涉及调整配置传输顺序或更新

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

九度1017:还是畅通工程

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

JUST CODE IT 342

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32F407中文手册

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

QDUOJ-16 分糖果(图论, 广搜)

Problem 16: 分糖果 Time Limit:1 Ms| Memory Limit:128 KB Difficulty:1 Description 童年的我们,将和朋友分享美好的事物作为自己的快乐。这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们。已知糖果从一个人传给另一个人需要1 秒的时间,同一个小朋友不会重复接受糖果。由

狂飙的蜗牛 的专栏 3550

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hduoj-1874 畅通工程续(Dijistra + Floyd + Bellman_Ford + SPFA)

图论模板题,Dijistra + Floyd + Bellman_Ford + SPFA代码.

狂飙的蜗牛 的专栏 1689

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NYOJ-42 一笔画问题(图论,深搜)

一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入第一行只有一个正整数N(N 每组测试数据的第一行有两个正整数P,Q(P 随后的Q行,每行有

狂飙的蜗牛 的专栏 1569

nyoj-239 月老的难题 (二分图匹配—匈牙利算法 && 网络流—Dinic算法)

月老的难题 二分图匹配-匈牙利算法,网络流-Dinic算法,模板题 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘。 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭。 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福

狂飙的蜗牛 的专栏 1545

NYOJ-38 布线问题(图论,最小生成树,Prime)

布线问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1、把所有的楼都供上电。 2、所用电线花费最少 输入第一行是一个整数n表示有n组测试数据。(n 每组测试数据的第一行是两个整数v,e. v表示学校里楼的总个数(v 随后

狂飙的蜗牛 的专栏 1445

POJ-2195 Going Home (最小费用最大流初学 && 最大权二分匹配—KM算法)

Going Home 最小费用最大流 && 最大权二分匹配,两种解法 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16870   Accepted: 8636 Description On a grid map there are n little men and n houses. In each unit

狂飙的蜗牛 的专栏 1435

特殊“邻接表”建图方法

(此文借鉴 dollarzhaole 的 《邻接表建图方法及代码》 ) 说明:         建立无向图;         第一行输入n 表示边数; 输入示例:  5  3 4 6  3 7 8  1 3 6  2 4 7  3 5 1 图示例:                 方法:         利用数组和结构体模拟边与边的关系, 极大的节省空间和时

狂飙的蜗牛 的专栏 1265

POJ-1094 Sorting it all out (拓扑排序)

Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26070   Accepted: 9031 Description An ascending sorted sequence of distinct values is one

狂飙的蜗牛 的专栏 994

NYOJ-510 昂贵的聘礼(图论)

昂贵的聘礼 时间限制:1000 ms  |  内存限制:10000 KB 难度:4 描述      年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了,于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出这么多金币,便请求酋长降低要求。酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币。如果你能够弄来他的水

狂飙的蜗牛 的专栏 972

Poj-2249 Remmarguts' Date (K短路)

Remmarguts' Date Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 19745   Accepted: 5374 Description "Good man never makes girls wait or breaks an appointment

狂飙的蜗牛 的专栏 885

POJ 1273 Drainage Ditches (网络流 EK && Dinic)

Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53153   Accepted: 20238 Description Every time it rains on Farmer John's fields, a pond form

狂飙的蜗牛 的专栏 873

最小生成树--Kruskal

Kruskal 代码模板 基本思路:         新手初学,使用优先队列,免去排序;并查集判环,过程中进行了路径压缩,以提高效率; 然后贪心建立最小生成树, min为最小权值;         算法演示: http://sjjg.js.zwu.edu.cn/SFXX/sf1/kruskal.html         另外,同为最小生成树的Prime算法和Kruskal算法的适用

狂飙的蜗牛 的专栏 824
上一篇: hduoj-1874 畅通工程续(Dijistra + Floyd + Bellman_Ford + SPFA)
下一篇: poj-1006 生理周期(中国剩余定理)
tbl00c
博客等级 码龄13年 21粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值