概要

问题描述

  雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉。
  为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉。
  现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠)。请问灌溉所有麦田最少需要多少费用来修建水渠。

输入格式

  输入的第一行包含两个正整数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。


思路

这是道经典的图论算法的题目,最小生成树问题——利用Kruskal算法解题


代码(90分)

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;typedef struct edge{int start;int end;int dist;
}Edge; struct cmp{bool operator() (Edge e1,Edge e2){return e1.dist>e2.dist;}
};priority_queue<Edge,vector<Edge>,cmp> min_heap;
int data[1001];
int n,m;
Edge e;
int ans = 0;int Find(int root)
{if(data[root] < 0){return root;}return data[root] = Find(data[root]);
}void Union(int root1,int root2)
{root1 = Find(root1);root2 = Find(root2);if(root1 < root2){data[root1] += data[root2];data[root2] = root1;}else if(root2 < root1){data[root2] += data[root1];data[root1] = root2;}else{return;}m--;
}void Kruskal()
{while(!min_heap.empty()){e = min_heap.top();min_heap.pop();int root1 = e.start;int root2 = e.end;if(Find(root1) != Find(root2)){ans += e.dist;Union(root1,root2);}if(m == 1){break;} }
}int main()
{while(cin>>n>>m){for(int i = 1 ; i <= n ; i++){data[i] = -1;}ans = 0;while(!min_heap.empty()){min_heap.pop();}for(int i = 0 ; i < m ; i++){cin>>e.start>>e.end>>e.dist;min_heap.push(e);}Kruskal();cout<<ans<<endl;}   return 0;
}

CCF考试——201412-4最优灌溉相关推荐

  1. 【CCF 201412-4】最优灌溉 (求最小生成树)

    CCF 201412-4 最优灌溉                                                          问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田, ...

  2. CCF201412-4 最优灌溉(解法二)(100分)【废除!!!】

    试题编号: 201412-4 试题名称: 最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井, ...

  3. CCF201412-4 最优灌溉(100分)

    试题编号: 201412-4 试题名称: 最优灌溉 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井, ...

  4. CCF 考试C语言编辑器的一个注意事项

    CCF考试的C语言编辑器无法编译像这样的句子 for(int i=0;i<n;i++); 对其变量i的定义必须在前面即 int i; for(i=0;i<n;i++);

  5. 【CCF相关】CCF考试的形式以及难度

    1. 考试形式 CCF 考试的形式是 5 题,每题多个测试点,一共 100 分,5 题 500 分,时长 4 小时.有关更多介绍可以看官网上的解答 这里. 现在 CCF 赛制改革了,考试的时候提交后可 ...

  6. 14年12月CCF真题4-最优灌溉

    问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口 很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用 部分麦田作为 ...

  7. ccf 201412-4 最优灌溉 (100分)

    问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为&q ...

  8. ccf 最优灌溉(prime模板)

    模板题 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int lowcost[1010]; int ...

  9. 优考试在线考试系统计算机,使用优考试在线考试系统解决企业员工考核评比

    随着信息时代的高速发展,很多实体传统的东西已经慢慢搬到网络上了,在线考试就是在其中发展的很迅速的一种,企业的员工考核.员工的培训.评比都可以使用企业在线考试系统来解决了,电脑+微信+小程序+手机考试相 ...

最新文章

  1. SCRIPT1028:缺少标识符、字符串或数字 jquery ajax
  2. sketch如何做设计稿交互_交互设计师是做什么的——交互设计的历史、现状和未来...
  3. redis主从复制下哨兵模式---选举原理
  4. ansible相关说明
  5. 10、如何查看MySQL系统帮助?
  6. Django完整配置settings.py
  7. html基本标签与属性
  8. AlfaLaval公司采用低速通风技术冷却数据中心
  9. 深度学习之卷积神经网络 ZF Net
  10. C++设计模式-访问者模式
  11. Java基础知识之方法的通用格式、注意事项与带参数的方法
  12. SAP License:ERP系统管理软件该有的“魅力”
  13. linux下集成开发环境之ECLIPSE--在线调试、编译程序
  14. TextBox内容垂直居中
  15. 字节跳动的面试算法题,实在太变态了
  16. 音乐频率的划分及播放器均衡器设置
  17. windows server2012 r2增加内网ip
  18. LWN:5.18合并窗口第一部分!
  19. mysql新增一个常数列_添加常数列
  20. [来自iPc.me] 技术文,绝对是牛叉的技术文!把妹高手谈如何跟刚搭讪

热门文章

  1. [年终总结]一年一年又一年
  2. 王者荣耀助手动态服务器维护中,王者荣耀助手动态怎么发不了 | 手游网游页游攻略大全...
  3. iPhone4升级iOS7输入卡顿的完美解决办法
  4. 怎么找电脑服务器文档,电脑服务器地址怎么找
  5. 走在边缘地带上的百度,还是差了那么一点!
  6. GB/T 7714-2005参考文献规范[转]
  7. js中对字符串的操作函数
  8. 国科大港中文提出带视觉语言验证和迭代推理的Visual Grounding框架,性能SOTA,代码已开源!(CVPR2022)...
  9. 自从干了IT,我犯过的这些错可以绕地球一圈…
  10. IC前后端001:高扇出的危害