农夫约翰决定给他的N(1<=N<=300)个牧场浇水,这些牧场被自然的命名为1..N。他可以给一个牧场引入水通过在这个牧场挖一口井或者修一条管道使这个牧场和一个已经有水的牧场连接。
在牧场i挖一口井的花费是w_i(1<=w_i<=100000)。修建一条水管连接牧场i和牧场j的花费是p_ij(1<=p_ij<=100000;p_ij=p_ji;p_ii=0)。
请确定农夫约翰为了完成浇灌所有的牧场所需的最小的总花费。
题目名称:water
输入格式:
第1行:一个单独的整数n。
第2..n+1行:第i+1行包含一个单独的整数w_i。
第n+2..2n+1行:第n+1+i行包含n个用空可分开的整数;其中第j个数是p_ij。
输入样例(file water.in):
4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0
输入说明:
这里有4个牧场,修井和修管道的代价如图。
输出格式:
第1行:一个单独的整数,表示花费。
输出样例(file water.out):
9
输出说明:
农夫约翰可以在第4个牧场修井,并且将每个牧场和第一个连接起来,这样,花费是3+2+2+2=9。

分析:生成树的裸题,到要用到一个小技巧:将挖水井的费用做成一条从i到n+1的边,再用克鲁斯卡尔算法即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Edge{int qs,zz,w;
}E[100000];
long long f[1000],ans=0,k=0,n,m,w[1000],jl[1000];int find(int x)
{ return x==f[x]?x:f[x]=find(f[x]);
}void uinon(int x,int y)
{  int p=find(x),q=find(y);  if (p!=q){f[p]=q;}
}
int cmp(const Edge &x,const Edge &y){return x.w<y.w;
} int main()
{cin>>n;for (int i=1;i<=n;++i){scanf("%d",&w[i]);}for (int i=1;i<=n+1;++i)f[i]=i;for (int i=1;i<=n;++i)for (int j=1;j<=n;++j){int x;scanf("%d",&x);if (x!=0){m++;E[m].qs=i;E[m].zz=j;E[m].w=x;} }for (int i=1;i<=n;++i){m++;E[m].qs=i;E[m].zz=n+1;E[m].w=w[i];m++;E[m].qs=n+1;E[m].zz=i;E[m].w=w[i];}sort(E+1,E+m+1,cmp);int k=0;for (int j=1;j<=m;++j){if (find(E[j].qs)!=find(E[j].zz)){uinon(E[j].qs,E[j].zz);ans+=E[j].w;k++;}if (k==n) {break;} }cout<<ans;return 0;
}

[USACO Oct08] 挖水井题解相关推荐

  1. 185. [USACO Oct08] 挖水井

    185. [USACO Oct08] 挖水井 ★★   输入文件:water.in   输出文件:water.out   简单对比 时间限制:1 s   内存限制:128 MB 农夫约翰决定给他的N( ...

  2. 185.[USACO Oct08] 挖水井 (第三次考试大整理)

    185. [USACO Oct08] 挖水井 输入文件:water.in   输出文件:water.out   简单对比 时间限制:1 s   内存限制:128 MB 农夫约翰决定给他的N(1< ...

  3. 186. [USACO Oct08] 牧场旅行

    157. [USACO Nov07] 奶牛跨栏 186. [USACO Oct08] 牧场旅行 ★★ 输入文件:pwalk.in 输出文件:pwalk.out 简单对比时间限制:1 s 内存限制:12 ...

  4. [Usaco2008 Oct]Watering Hole 挖水井

    相关链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1938 描述: Description 农夫约翰决定给他的N(1<=N<=3 ...

  5. USACO Section 4.2 题解

    最近开始做荒废了好久的USACO,希望能够以一天一个Section的速度做完吧.题解也会每天更新. Drainage Ditches(ditch) 本题是个最基本的网络流.这里我用的Dinic算法,递 ...

  6. jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)

    1594: [USACO] 题目描述 Farmer John traded one of his cows for a cow that Farmer Don called 'The Knight' ...

  7. HDU 4009 Transfer water (最小树形图+虚根)

    题意:有一个村庄需要修建供水系统.每户居民的房子都有一个三维坐标,每户居民可以选择自己挖井或者从其他居民家里引水.挖水井和引水分别需要花费不同的钱.每户居民有一个意愿表,只愿意对表内的居民家供水.最后 ...

  8. 2021春 算法复习

    1. [USACO12FEB]Cow Coupons G 题面:https://www.luogu.com.cn/problem/P3045 贪心+堆.首先在优惠券没用完的情况下按优惠价从小到大全部买 ...

  9. [综合面试] 计算机面试书籍与求职网站推荐

    一.推荐书籍 计算机的好书挺多的,我买了也有四五十本,也花了不少钱,但是这些投资都是值的,好好看一下这些书,让自己找工作时的薪水涨个几千是没问题的.当然,也有些书是电子版的.我是c++方向的,可能大部 ...

最新文章

  1. 免装版_无缝贴图制作软件 PixPlant2中文免装版
  2. 【计算机网络复习 数据链路层】3.5.2 ALOHA协议
  3. OAuth2.0 微信授权机制
  4. 失去循环标记的Python,我这样实现跳出外层循环
  5. mysql8和php7不能连接_php无法连接mysql8.x
  6. vue ----axios
  7. 美团推出外卖版拼多多;iOS 14 Beta 3暂禁用3D Touch功能;Rust 1.45 发布| 极客头条
  8. Linux 命令(19)—— tar 命令
  9. ARKit玩起来 - AR预览唱片-史小川-专题视频课程
  10. 如何将苹果手机里照片和视频传输至win或mac电脑上面?
  11. CSP 202112-3 登机牌条码 (详细图解)
  12. Jetson Tegra X系列刷机教程
  13. 从零开始搭建ROS小车(绪论)
  14. 美杂志公布全球最重要六大科学实验(组图)
  15. 大富豪3(GM商城版)新手攻略之购买土地
  16. 旧 Mac、PC 别扔,变身 Chromebook 了解一下
  17. 【Jquery选择器】
  18. Caliburn.Micro界面跳转
  19. 电商版3Q大战 815电商大战一周年祭
  20. 华为不能升级鸿蒙的手机怎么办,华为宣布鸿蒙将出,这几款手机无法升级鸿蒙系统,看看有没有你的...

热门文章

  1. 毫无疑问计算机犯罪是一个很严重的问题英语,英语四级作文高分句型
  2. Ex-KMP(模板)
  3. java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署
  4. “产品经理进阶沙盘演练之产品谋划”技术讲座圆满结束!
  5. php代码审计课程笔记
  6. 观点:企业需要一个什么样的独立云管平台?
  7. 我国网络安全现状怎么样?如何应对网络安全风险?
  8. 中科软测试面试题2019_中科软笔试题和面试题
  9. JS 文件压缩与反压缩
  10. signature=da5bc91649d670f1b27f07ad681e7c71,Signature of HDM clustering at Planck angular scales