博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ccf 最优灌溉
阅读量:7296 次
发布时间:2019-06-30

本文共 1190 字,大约阅读时间需要 3 分钟。

问题描述

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

#include 
#include
#define INF 0x7fffffffusing namespace std;int prim(vector
> &v,int u){ int n=v.size()-1,minv,sum=0; vector
cost=v[u]; vector
vis(n+1,false); vis[u]=true; for(int i=1;i
v[minv][i]) cost[i]=v[minv][i]; } return sum;}int main(){ int n,m; cin>>n>>m; vector
> adj(n+1,vector
(n+1,INF)); for(int i=0;i
>s>>e>>w; adj[s][e]=w; adj[e][s]=w; } cout<

转载于:https://www.cnblogs.com/xLester/p/7570265.html

你可能感兴趣的文章
大白话5分钟带你走进人工智能-第十八节逻辑回归之交叉熵损失函数梯度求解过程(3)...
查看>>
在wamp下安装bugfree
查看>>
《大道至简》第二章(是懒人创造了方法)读后感
查看>>
【database】database domain knowledge
查看>>
UVa 455 - Periodic Strings
查看>>
使用JDBC连接数据库
查看>>
20172307 2017-2018-2 《程序设计与数据结构》第6周学习总结
查看>>
c#中使用多线程访问winform中控件的若干问题
查看>>
strong_alias && weak_alias && __attribute__
查看>>
js中三个对数组操作的函数 indexOf()方法 filter筛选 forEach遍历 map遍历
查看>>
Histogram Equalization(直方图均衡化)
查看>>
string::substr()简介
查看>>
[LeetCode] Permutations II
查看>>
献给我老公 - Java枚举类型
查看>>
Hadoop简介
查看>>
AD9857和ADS5542昨天调试通过了。
查看>>
MySQL点滴
查看>>
Servlet学习笔记03——什么是DAO?
查看>>
AOJ673 聪明的输入法(字典树)
查看>>
Github常见错误
查看>>