畅通工程之局部最小花费问题 (并查集)

7-50 畅通工程之局部最小花费问题 (35分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村庄数目N (1≤N≤100);随后的N(N−1)/2行对应村庄间道路的成本及修建状态:每行给出4个正整数,分别是两个村庄的编号(从1编号到N 阅读详情
7-1 畅通工程之局部最小花费问题(35 分)

某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。

输入格式:

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

输出格式:

输出全省畅通需要的最低成本。

输入样例:

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

输出样例:

3

#include <iostream>


using namespace std;

//思路:先把原有的路合并为一个集合(不含回路),然后利用cruscal思想,把权值由小到大的路合并到集合里(不含回路),直到集合内点数等于总点数

//判断有没有回路只需判断两个点的祖先是不是相同,相同则不符
//坑题,数据上限是5000,所以数组要大
int father[10001];
int num[10001];
int num1=0;
typedef struct
{
    int start;
    int stop;
    int fee;
    int flag;
}road;
typedef struct
{
    int note;
    int no;
}hehe;
hehe hehe1[10001];
int tofind(int x)//找根
{
    int temp=x;
    while(father[temp]!=-1)
    {
        temp=father[temp];
    }
    return temp;
}
void tounion(int a,int b)//把b的根连到a的根上,合并成一个
{
    int x=tofind(b);
    father[tofind(b)]=tofind(a);
    num[tofind(a)]+=num[x];
    num1=num[tofind(a)];


}
road r[10001];
int main()
{


    int n;
    cin>>n;
    if(n==1)
    {
        cout<<0;
        return 0;
    }
    int i;
    for(i=1;i<=n;i++)
    {
        father[i]=-1;
        num[i]=1;
    }//初始化,把每一个数的爸爸初始化为-1


    for(i=0;i<(n*(n-1))/2;i++)
    {
        cin>>r[i].start>>r[i].stop>>r[i].fee>>r[i].flag;
        if(r[i].flag==1)
        {
            if(tofind(r[i].start)==tofind(r[i].stop))
                ;
            else
            {
                tounion(r[i].start,r[i].stop);
                if(num1==n)
                {
                    cout<<0;
                    return 0;
                }
            }


        }
    }

    int tt=0;
    int j;
    for(i=0;i<n*(n-1)/2;i++)
    {
        if(r[i].flag==0)
        {
            hehe1[tt].no=r[i].fee;
            hehe1[tt].note=i;
            tt++;
        }
    }
    for (i=1; i<tt; i++)
        for(j=0; j<tt-i; j++)
        {
           if(hehe1[j].no>hehe1[j+1].no)
           {
               int t1,t2;
               t1=hehe1[j].no;
               hehe1[j].no=hehe1[j+1].no;
               hehe1[j+1].no=t1;
               t2=hehe1[j].note;
               hehe1[j].note=hehe1[j+1].note;
               hehe1[j+1].note=t2;
           }
        }//把权值由小到大排序
        int sum=0;
    for(i=0;i<tt;i++)
    {
        int temp=hehe1[i].note;
        if(tofind(r[temp].start)==tofind(r[temp].stop))
                continue;
        else
        {
            sum+=hehe1[i].no;
            tounion(r[temp].start,r[temp].stop);
            if(num1==n)
            {
                cout<<sum;
                break;
            }
        }


    }
}

畅通工程之局部最小花费问题(并查集+优先队列 或者prim)(最小生成树和最短路径区别) 收获: prim是从某一点开始选最短的,然后依次增加节点,直到连通 Krustal是从一开始就选择最短的路径,不判断点是否存在 1.还是要注意find函数 2. ) 代码: 一、优先队列 //畅通工程之局部最小花费问题 //并查集+prim算法 //或者并查集+优先队列 #include<iostream> #include<queue> using namespace std; #define N 105 int n; int pre[N]; struct ed. 阅读详情

相关推荐

告别手动群发!用IDA Pro和CE搞定企业微信4.1.38.6011的HOOK开发(附完整代码)

本文详细介绍了如何利用IDA Pro和Cheat Engine进行企业微信4.1.38.6011的HOOK开发,实现自动化群发功能。从逆向工程环境配置、关键函数定位到HOOK框架设计,提供完整代码示例,帮助企业提升运营效率。

weixin_42533120的博客 479

7-1 畅通工程之局部最小花费问题 (35 分)

7-1畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需...

910

爱快路由(ikuai)多WAN口配置实战:提升网络带宽与稳定性

本文详细解析了爱快路由(ikuai)多WAN口配置的实战技巧,包括双线智能分流、毫秒级故障切换和带宽叠加利用等核心功能。通过七种配置方案和智能QoS策略,帮助企业提升网络带宽与稳定性,实现99.9%以上的高可用性。

weixin_30566063的博客 700

畅通工程之局部最小花费问题 — c++,无向图

某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。随后的N(N−1)/2行对应村庄间道路的成本及修建状态:每行给出4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态 — 1表示已建,0表示未建。第一种是Prim算法,简单来讲是从一个顶点出发,寻找权值最小边,再加入新顶点,继续寻找,有点贪心的思想。输出全省畅通需要的最低成本。

m0_74195695的博客 875

VisionMaster SDK C#二次开发核心技术指南

以下是基于**VisionMaster SDK C#二次开发核心技术指南**,结合实战案例与关键代码解析,帮助开发者快速掌握工业视觉应用集成。

东城十三 3057

光模块封装工艺简介

光模块按照部件可以分为芯片、光器件、光模块三个层级;按照应用领域大概可分为电信应用、数通应用两个领域;按照内部器件的封装工艺可分为TO、Box、COB三大类。 但是,无论是哪种类型的光模块,其生产工艺基本上可以分为封装、测试两大块。   那什么叫做器件封装呢?我的理解器件封装就是利用胶水、焊料、机械、热量等手段把器件按照一定的先后次序结合形成一个整体的过程,就好像早上吃的煎饼,把面粉、鸡蛋、脆饼、烤肠、葱花等这些“器件”,按照一定的顺序,通过食用油、甜面酱、加热、卷起来等手段结合到一起,形成了美味的

qq_33253182的博客 2818

畅通工程之局部最小花费问题 - 最小生成树

某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村庄数目N(1≤N≤100);随后的N(N−1)/2行对应村庄间道路的成本及修建状态:每行给出4个正整数,分别是两个村庄的编号(从1编号到

m0_75129175的博客 313

从零到一:IC Compiler II(ICC II)后端设计流程详解

本文详细解析了IC Compiler II(ICC II)后端设计流程,从环境准备到物理实现,再到布线优化与签核验证。通过实战案例和高效技巧,帮助工程师掌握ICC II工具链的应用,提升数字集成电路设计的效率和质量。

weixin_30879169的博客 344

畅通工程之局部最小花费问题(最小生成树)

给定两个数 N,M,其中 M 表示地图中点的个数, N 表示点与点之间的道路条数,然后 M 行,每一行给出三个数,A,B,C,表示两个村庄的编号(从1编号到N),和两个点道路的成本,求全图畅通的最小花费。 思路分析 建立一个邻接矩阵,将所有路径存入(详见第35行),一开始把所有点看成独立的点,然后取点 1 (其实一开始取哪一个点都可以,但是我们一般是习惯于取第一个点),然后计算节点 1 其...

JZK-Keven 的博客 1233

智能车图像处理12-进阶篇4--环岛辅助判断条件

主函数: 第6行: 含义是当前需要不在坡道和车库状态 第11-12行 : 寻找一下环岛的双断点(在辅助函数中) 第16-66行: 当左右线的方差满足一边很大,一边很小时,truepianfangflag /truepianfangflagforleft 置1,在环岛的判断中使用。 辅助函数: 双断点函数(左与右相似,以做为例): 第13-28行: 第一处断点 第29-40行: 第一处断点后 连续边线 第41-52行: 第一处连续后,第二处断点 第53-64行: 第二处断点后,第二处

taiyuezyh的博客 1万+

Open3D 使用CPD算法对点云配准【2025最新版】

Coherent Point Drift相干点漂移算法实现点云配准(python代码)博客长期更新,本文最近更新时间为:2025年2月2日。

点云侠的博客 8万+

PTA---7-50 畅通工程之局部最小花费问题(最小生成树...并查集)

PTA—畅通工程之局部最小花费问题 直达链接点我!!! 思路 开始一直想DFS的思路…然后发现毕竟是多条道路都要试…然后遍历起来麻烦,保存最小花费也麻烦…pass 然后就是Dijkstra了…不过只能解决一个节点到其他节点的…这样其实也可以,毕竟畅通就是全部都连通了,那么就可以保存一个最小的dis数组(表示从开始这个点到其他所有点的最小花费)…但是…可能会重复花费… 后来想了想,并查集可以先将已经建好的道路先并起来,然后找最小的花费(直接按花费从小到大排序,用一个结构体保存输入的未建成的边),如果他俩没连

zhaoxiy的博客 704

零承诺的启动之路:详解 SAP BTP 的 Pay-As-You-Go for SAP BTP(含案例与迁移策略)

SAP BTP的Pay-As-You-Go(PAYG)模式为零承诺的按需付费方案,适合PoC和小规模上线场景。它提供生产环境直接启用服务的能力,按月后付标准目录价,无预付和折扣。PAYG可与BTP企业协议(BTPEA/CPEA)混合使用,用量稳定后可平滑迁移至CPEA获取更好财务条款。关键优势在于灵活开启/关闭服务,支持通过SAP Discovery Center估算费用,并配合成本治理工具控制支出。该模式适用于创新项目初期,当业务规模可预测时再考虑转为承诺型消费模式。

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

习题8.5 畅通工程之局部最小花费问题 并查集

畅通工程之局部最小花费问题 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村...

qq_43738331的博客 495

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

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

ssm框架搭建

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

PTA: 畅通工程之局部最小花费问题 [并查集]

题目 输出格式: 输出全省畅通需要的最低成本。 输入样例: 4 1 2 1 1 1 3 4 0 1 4 1 1 2 3 3 0 2 4 2 1 3 4 5 0 输出样例: 3 代码 #include <cstdio> #include <algorithm> #include <queue> #include <set> using namespace std; const int maxn = 1e2+5; int fa[maxn]; void i

ZhuTT的博客 457

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

PTA习题 畅通工程之局部最小花费问题 (并查集)

7-50 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入...

Coding 1240

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

畅通工程之局部最小花费问题(修改加注释版)1prime 2暴力遍历 3kruskal(并查集)

https://blog.youkuaiyun.com/SYaoJun/article/details/101450783?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160733587819725271011092%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160733587819725271011092&biz_id=0&

weixin_45859534的博客 235

7-11 畅通工程之局部最小花费问题(最小生成树+并查集)

题目链接 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。输入格式:输入的第一行给出村庄数目N (1≤N≤1

王小平 732

2-2 畅通工程之局部最小花费问题 (30分)

2-2 畅通工程之局部最小花费问题 (30分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村庄数目N (1≤N≤100);随后的N(N−1)/2行对应村庄间道路的成本及修建状态:每行给

WR的博客 803

数据结构_习题8.4 畅通工程之最低成本建设问题_习题8.5 畅通工程之局部最小花费问题_Kruskal+并查集+qsort

【代码】数据结构_习题8.4 畅通工程之最低成本建设问题。

陈子二的博客 268

pta题解

pta题解 习题8.4 畅通工程之最低成本建设问题 (30分) 这题是最小生成树问题,先将费用进行排序,每一次都选取当前最小的费用的那条路,然后用并查集,看看有没有成环,如果没有就将相连的道路进行标记,最后统计是否所有的城镇都连起来了,如果只要一个城镇的主人是自己,那就符合要求。 #include<stdio.h> int f[10000]; struct way { int...

a921893396的博客 441

习题8.5 畅通工程之局部最小花费问题

浙大版《数据结构(第2版)》题目集 习题8.5 畅通工程之局部最小花费问题https://pintia.cn/problem-sets/434/problems/6542 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。

Mr_Yuwen_Yin的博客 597

7-50 畅通工程之局部最小花费问题 (35 分)

某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建快速路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全地区畅通需要的最低成本。 输入格式: 输入的第一行给出村庄数目N (1≤N≤10...

相似的人适合一起打闹 187

HDOJ畅通工程之并查集

http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include #include #define N 1010 int a[1010]; int find(int t) {  int r=t;  while(a[r]!=r) //找父节点  {   r=a[r];  }  int x=t,tem;  while(a[x]!

WEIHAI1996的博客 408

PTA—— 畅通工程之局部最小花费问题

目录题目来源题目内容我的答案(c++)相似题目算法简述一.代码实现二.各变量含义三.函数功能四.如何使用碎碎念 题目来源 1.PTA—数据结构与算法题目集(中文)—编程题—7-50 畅通工程之局部最小花费问题 (35分) 2.网址:https://pintia.cn/problem-sets/15/problems/897 题目内容 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间

m0_51371779的博客 1723
下一篇: 劲歌金曲(dp)
FDOM
博客等级 码龄10年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值