最优灌溉

时间限制: 1.0s
内存限制: 256.0MB
 
问题描述
  雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉。
  为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用部分麦田作为“中转站”,利用水渠连接不同的麦田,这样只要一片麦田能被灌溉,则与其连接的麦田也能被灌溉。
  现在雷雷知道哪些麦田之间可以建设水渠和建设每个水渠所需要的费用(注意不是所有麦田之间都可以建立水渠)。请问灌溉所有麦田最少需要多少费用来修建水渠。
 
输入格式
  输入的第一行包含两个正整数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 <bits/stdc++.h>
#define LL long long
#define INF 0x3f3f3f3f3f3f3f
#define pii pair<int,int>
using namespace std;
const int maxn = ;
struct arc{
int to,cost,next;
arc(int x = ,int y = ,int z = -){
to = x;
cost = y;
next = z;
}
}e[];
int tot,n,m,head[maxn];
LL d[maxn];
bool done[maxn];
void add(int u,int v,int cost){
e[tot] = arc(v,cost,head[u]);
head[u] = tot++;
e[tot] = arc(u,cost,head[v]);
head[v] = tot++;
}
priority_queue< pii,vector< pii >,greater< pii > >q;
LL prim(){
while(!q.empty()) q.pop();
for(int i = ; i <= n; ++i){
done[i] = false;
d[i] = INF;
}
q.push(make_pair(d[] = ,));
LL ans = ;
while(!q.empty()){
int u = q.top().second;
q.pop();
if(done[u]) continue;
done[u] = true;
ans += d[u];
for(int i = head[u]; ~i; i = e[i].next){
if(!done[e[i].to] && e[i].cost < d[e[i].to]){
d[e[i].to] = e[i].cost;
q.push(make_pair(d[e[i].to],e[i].to));
}
}
}
return ans;
}
int main(){
int u,v,w;
while(~scanf("%d %d",&n,&m)){
memset(head,-,sizeof(head));
for(int i = tot = ; i < m; ++i){
scanf("%d %d %d",&u,&v,&w);
add(u,v,w);
}
printf("%I64d\n",prim());
}
return ;
}

最新文章

  1. POJ 3233 Matrix Power Series(构造矩阵求等比)
  2. Oracle错误:动态执行表不可访问,本会话自动统计被禁止,关闭自动统计之后的问题
  3. 【Python】python代码如何调试?
  4. NSNumber,NSValue和NSData
  5. Lua的协程(coroutine)
  6. 硬盘4k对齐教程总结
  7. redis 服务器端命令
  8. 北京西服定做_衬衫定制_关于我们_Dimoon TLR.
  9. Linux下包含头文件的路径问题与动态库链接路径问题
  10. Qt 多线程 详细函数说明及其事例
  11. IBM的人工智能“沃森”首次确诊罕见白血病,只用了10分钟!
  12. Lua无法排序的问题(Key需要是连续的)
  13. Echarts-各个配置项详细说明总结【转】
  14. hdu6107 倍增法st表
  15. 【3dsmax2016】安装图文教程、破解注册以及切换语言方法
  16. 云主机IO性能测试
  17. 如何在servlet中获取spring创建的bean
  18. JavaScript之图片操作7
  19. HTTP状态代码列表
  20. word文档排版技巧

热门文章

  1. Maven配置Spring+SpringMVC+MyBatis(3.2.2)Pom 以及 IntelliJ IDEA 怎样打开依赖视图
  2. xml布局内容总结(四)--Android
  3. vijos - P1732能量採集 (状态转移)
  4. zzulioj--1841--so easy!麻麻再也不用担心我的数学了!(数学水题)
  5. POJ 2478 线性递推欧拉函数
  6. Google Codejam 2016 Round1A Problem C BFFs 简单图论
  7. java9新特性-1-概述
  8. Java类和对象11
  9. AngularJs轻松入门(二)数据绑定
  10. Andoid 更好的Android多线程下载框架