数据结构实验之图论九:最小生成树

【C++】数据结构之最小生成树算法 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。 输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。 输入样例:输出样例:Prim算法 kruskal算法... 阅读详情
Problem Description

 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。

 

Input

 输入包含多组数据,格式如下。

第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000)

剩下m行每行3个正整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c。

 

Output

 每组输出占一行,仅输出最小花费。

Example Input
3 2
1 2 1
1 3 1
1 0
Example Output
2

0

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int gra[1005][1005];
bool visit[1005];
int lowcost[1005];
int sum, flag;
   int m, n;
void prime(){
    int k, temp;
    visit[1] = true;
    for(int i = 1; i <= m; i++)
        lowcost[i] = gra[i][1];
    for(int i = 2; i <= m; i++){
        temp = INF;
        for(int j = 1; j <= m; j++){
            if(!visit[j] && lowcost[j] < temp){
                temp = lowcost[j];
                k = j;
            }
        }
        if(temp == INF){
            flag = 1;
            break;
        }
        visit[k] = true;
        sum += temp;
        for(int j = 1; j <= m; j++){
            if(!visit[j]&&lowcost[j] > gra[j][k])
                lowcost[j] = gra[j][k];
        }
    }
}
int main(){
    int u, v, cost;
    while(cin>>m>>n){
        memset(gra, INF, sizeof(gra));
        for(int i = 1; i <= m; i++)          //初始化的时候注意自己到自己的路径为0
            for(int j = 1; j <= m; j++)
                if(i == j)
                    gra[i][j] = 0;
        memset(visit, false, sizeof(visit));
        flag = 0;
        sum = 0;
        for(int i = 0; i < n; i++){
            cin>>u>>v>>cost;
            if(cost < gra[u][v]){            //输入的时候注意判断该数是不是小于INF
                gra[u][v] = cost;
                gra[v][u] = cost;
            }
        }
        prime();
        if(n < m-1)
            cout<<"0"<<endl;
        if(!flag)
            cout<<sum<<endl;
    }
    return 0;
}


数据结构--最小生成树详解 前言 A wise man changes his mind,a fool never. Name:Willam Time:2017/3/11、什么是最小生成树现在假设有一个很实际的问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网? 于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n 阅读详情

相关推荐

数据结构实验之图论九:最小生成树(Prim算法)

数据结构实验之图论九:最小生成树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。 第一...

小自洽 754

SDUT ACM 2144 最小生成树,克鲁斯卡尔模板

图结构练习——最小生成树 Time Limit: 1000MS Memory limit: 65536K 题目描述 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 输入 输入包含多组数据,格式如下。 第一行...

weixin_30894583的博客 436

E - 数据结构实验之图论九:最小生成树

Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。 第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000) 剩下m行每行3个非负整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c(城市编号从1到n)。 Output 每组输出

qq_39173848的博客 550

P2872 [USACO07DEC]Building Roads S(最小生成树)

原题链接 本题是最小生成树的相关题目,初始情况存在几条边,剩下的边需要自己选。 思路: 首先需要把所有点之间的距离求出来存到边的数组中,然后对边按权值从小到大进行排序,对已经存在的边重新再加入到边的数组中,把存在的边的权值设为0,那么之后首先就会选到权值为0的边,然后就按kruskal的模板代码写就行了。 注意: 1.精度问题 求边之间的距离时,sqrt()里面的参数应该是double型的,如果是int型,就会出现精度问题,需要对求出的数据进行强制转换 2.并查集初始化 #include<bi

行码棋 512

使用“最小生成树”算法解决村庄修路问题

若干村庄由若干条路链接,每条路需要一定的费用进行维护。为了使得维护的总费用最小,现在决定去掉一些道路,但要求各村庄之间仍然保持联通。使用“最小生成树”算法,设计一个程序使得村庄之间的总维护费用最小。

数字IC笔记-低功耗技术

传统的降低Power的方法主要有: 1.门控时钟技术(clock gating) 2.多阈值电压技术(MultiShreshold) 3.动态电压频率调节技术(DVFS) 目前有以下几种低功耗技术: 1.多电压技术(Multi-Voltage) 2.MTCOMS Power Gating 技术(多阈值功耗控制技术),比如基带部分中的2G、3G、CDMA、LTE等通过awake—>sleep—>awake的方式间歇式的打开或关断其电源,power gating 可以完全关掉dynamic的pow

sinat_41774721的博客 1932

C/C++数据结构——道路建设(最小生成树Prim)

随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。如果可以的话,输出Yes,否则输出No(两个城市不一定要直接的公路相连,间接公路到达也可以。接下来的n行给出建立公路的成本信息,每行给出三个整数,分别是相连的两个城市v1、v2(0......

weixin_44546342的博客 1799

给STM32 LWIP做一次‘性能体检’:手把手教你用Wireshark和iperf诊断网络瓶颈

本文详细介绍了如何使用Wireshark和iperf工具对STM32 LWIP网络性能进行全面诊断,帮助开发者精准定位网络瓶颈问题。通过搭建测试环境、集成iperf测试框架、深度报文分析和LWIP配置优化,实现从9KB/s到80MB/s的性能飞跃,特别适用于解决TCP发送速率和卡死问题。

weixin_29631169的博客 288

2144——数据结构实验之图论九:最小生成树

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

qq_44134712的博客 522

Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包)

文章目录前言一、安装Hive1. 下载压缩包并解压2. 安装Hive3. 配置环境变量4. 修改配置文件二、MySQL安装与配置1. 安装MySQL2. 安装MySQL jdbc包3. 为Hive创建MySQL账号三、验证Hive安装及错误处理1. 启动Hadoop2. 启动hive3. 运行Hive实例总结 前言 Hive 的安装需要建立在 Hadoop 的之上(类似于Hbase),关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客: Ubuntu下单机安装Hadoop详细教程(附

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 1万+

QCustomPlot实现毫秒级时间轴数据的动态可视化与实时刷新优化

本文深入探讨了如何利用QCustomPlot库高效实现毫秒级时间轴数据的动态可视化与实时刷新。文章从基础配置讲起,详细介绍了时间轴初始化、数据平滑滚动、增量更新与内存管理等核心优化技巧,并分享了应对高频数据的缓冲策略及OpenGL硬件加速等高级优化手段,旨在解决实时图表卡顿问题,提升流畅度。

weixin_29012677的博客 424

I - 数据结构实验之图论九:最小生成树(Kruskal算法)

I - 数据结构实验之图论九:最小生成树 Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。 第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000) 剩下m行每行3个非负整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c(城市编号从1到n)。 O

Ditto_xff的博客 299

数据仓库实践:从ITR流程讲指标体系建设

从 ITR 流程或者其他客服反馈流程的考核过程可见,实际工作中不可能只通过单个指标评价一个业务过程,需要从多个维度梳理业务,并把多个高度相关的指标组织起来,以避免只考虑其中某个指标从而摧毁整个业务过程的结果,指标体系=指标+体系。

the_singing_towers的博客 2265
上一篇: 数据结构实验之图论八:欧拉回路
下一篇: 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
NTrinity
博客等级 码龄9年 3粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值