问题描述

  雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口
很深的水井,所有的麦田都从这口井来引水灌溉。
  为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用
部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被
灌溉,则与其连接的麦田也能被灌溉。

现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用 (注意不是所有麦田之间都可以建立水渠)。请问灌溉所有麦田最少需要多少 费用来修建水渠。
输入格式

输入的第一行包含两个正整数n, m,分别表示麦田的片数和雷雷可以建立 的水渠的数量。麦田使用1, 2, 3, ......依次标号。

接下来m行,每行包含三个整数ai, bi, ci,表示第ai片麦田与第bi片麦田之 间可以建立一条水渠,所需要的费用为ci。
输出格式

输出一行,包含一个整数,表示灌溉所有麦田所需要的最小费用。

输入样例

4 4

1 2 1

2 3 4

2 4 2

3 4 3

输出样例

6

样例说明

建立以下三条水渠:麦田 1 与麦田 2、麦田 2 与麦田 4、麦田 4 与麦田 3。 评测用例规模与约定

前 20%的评测用例满足:n≤5。
前 40%的评测用例满足:n≤20。
前 60%的评测用例满足:n≤100。 所有评测用例都满足:1≤n≤1000,1≤m≤100,000,1≤ci≤10,000。

对最小生成树的考察,我用的prim算法。

#include <iostream>
#include <vector>
#include <math.h>
#include <map>using namespace std;int main() {map<pair<int,int>,int> line;     //储存边,key是相连两田,value是费用map<int,int> net;     //定义已连通的网int n,m;cin>>n>>m;for(int i=0;i<m;i++)     //输入数据
    {int a,b,c;cin>>a>>b>>c;line.insert(pair<pair<int,int>,int>(pair<int,int>(a,b),c));}net[1]=0;     //已连通网里添加田1int ans=0;while(net.size()<n){     //若已连通网里没有全部田int min=10001;     //定义最小值int field=1;     //定义要添加的田for(map<pair<int,int>,int>::iterator it = line.begin();it!=line.end();it++){     //迭代搜寻与已添加的节点(田)连接的所具有最小的费用的点int a = it->first.first;int b = it->first.second;if((net.find(a)!=net.end() && net.find(b)==net.end())     //新点不应在net里的判断|| (net.find(a)==net.end() && net.find(b)!=net.end())){int temp = it->second;if(temp<min)     //更新最小值
                {min=temp;if(net.find(a)==net.end())field=a;if(net.find(b)==net.end())field=b;}}}net[field]=0;     //添加新点(田)ans+=min;     //更新总费用
    }cout<<ans;return 0;
}

转载于:https://www.cnblogs.com/Outer-Haven/p/4695371.html

14年12月CCF真题4-最优灌溉相关推荐

  1. 14年12月CCF真题1-门禁系统

    问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每 位读者有一个编号,每条记录用读者的编号来表示.给出读者的来访记录,请 问每一条记录中的读者是第几次出现. 输入格式 输入的第 ...

  2. 2022年12月六级真题第1套(共8页)

    2022年12月六级真题第1套(共8页) 最近又到了我们备战六级考试的时候啦!我在第一时间拿到了2022年12月六级真题第1套 首先,这一套六级真题整体难度较高,但也有一些相对简单的题目,需要我们认真 ...

  3. 2020年12月六级真题翻译(北京大兴国际机场)

    小技巧:非重点词汇,比如数字,可以直接使用数学符号. 北京大兴国际机场位于天安门广场以南46公里处 Beijing Daxing International Airport is located 46 ...

  4. 四六级1990年-2021年12月历年真题PDF电子版、含详细解析及听力。网站直接下载,持续更新

    已更新2021年12月最新真题!并且不断更新!直接网站下载!听力解析真题都有! 可下载,可在线预览 1990年-2021年12月四六级真题.解析及听力下载,电子PDF版本,在线听力,详细解析,无水印. ...

  5. CKA真题 :2019年12月英文原题和分值

    所有命令都验证过,有更好的方式,欢迎留言~~~ CKA 习题和真题汇总 CKA考试经验:报考和考纲 CKA :2019年12月英文原题和分值 CKA考试习题:K8S基础概念--API 对象 CKA考试 ...

  6. vb中mschart利用数组作图_选考VB算法解析之2019年4月高考真题卷第17题

    说在前面 在对数组排序时,我们常把数组分成已排序区域和待排序区域,并使用左右边界来划分待排序区域的范围:对分查找时我们也引入了左右边界的概念.可见左右边界在数组中是一个非常重要的概念,它在分段处理数组 ...

  7. 一个算法笨蛋的12月leetCode刷题日记

    类似文章 一个算法笨蛋的2021年11月leetCode刷题日记 一个算法笨蛋的2021年12月leetCode刷题日记 一个算法笨蛋的2022年1月leetCode刷题日记 一个算法笨蛋的2022年 ...

  8. 全国青少年编程等级考试python二级真题2020年12月(含题库答题软件账号)

    对青少年编程等级考试Python真题答题考试系统关注的请点击 https://blog.csdn.net/zhengzyx2040/article/details/119329247 青少年软件编程( ...

  9. 全国青少年编程等级考试scratch四级真题2022年12月(含题库答题软件账号)

    对青少年编程等级考试scratch真题答题考试系统关注的请点击** 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手 1. ...

最新文章

  1. linux软件安装简介(apt和dpkg)
  2. pyspark 修改python版本_python – Pyspark从日期到字符串更改列的类型
  3. 凸多边形面积_C++计算任意多边形的面积
  4. 16 分频 32 分频是啥意思_CD4017是什么?十进制计数器分频器CD4017的逻辑功能呢?...
  5. java随机安排座位表程序_java – 为长凳生成随机座位表的最有效算法?
  6. 学Kafka,就必须了解的再均衡问题!
  7. Integer的自动装箱底层缓存原理
  8. Mac安装MySQL8碰到的问题
  9. bt种子磁力播放器 android,(安卓)种子磁力在线播放器 — 可离线至本地
  10. 高等数学复习笔记——第八章:向量代数与空间解析几何
  11. 阿尔卑斯山时间规划法精髓(提高工作效率)
  12. 解决双屏显示不一致的问题
  13. day15-正则表达式
  14. vc++之windows api
  15. 有钱人的心肠更硬吗?
  16. linux之cut命令的用法
  17. jdk8函数式接口——Consumer介绍
  18. 2022网络工程师下午大纲(附带华为交换机开局配置一本通)
  19. 明日方舟公式计算机,明日方舟公开招募公式汇总
  20. 太赞了!Github上都没有的“网约车”项目!!!

热门文章

  1. Android--添加子视图(addView和setView)
  2. Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  3. 数据结构经典书籍--数据结构与算法分析
  4. golang中的读写锁
  5. 现在的路由器是第几代了?每一代的特点是?
  6. 运行一个程序时如何打印出执行程序的时间
  7. STM32实现IAP功能之一
  8. 线程:等待/通知机制
  9. spring26-1: bean的实例方式
  10. [分享] 数学学术资源站点