P1550 [USACO08OCT]打井Watering Hole

题目背景

John的农场缺水了!!!

题目描述

Farmer John has decided to bring water to his N (1 <= N <= 300) pastures which are conveniently numbered 1..N. He may bring water to a pasture either by building a well in that pasture or connecting the pasture via a pipe to another pasture which already has water.

Digging a well in pasture i costs W_i (1 <= W_i <= 100,000).

Connecting pastures i and j with a pipe costs P_ij (1 <= P_ij <= 100,000; P_ij = P_ji; P_ii=0).

Determine the minimum amount Farmer John will have to pay to water all of his pastures.

POINTS: 400

农民John 决定将水引入到他的n(1<=n<=300)个牧场。他准备通过挖若

干井,并在各块田中修筑水道来连通各块田地以供水。在第i 号田中挖一口井需要花费W_i(1<=W_i<=100,000)元。连接i 号田与j 号田需要P_ij (1 <= P_ij <= 100,000 , P_ji=P_ij)元。

请求出农民John 需要为连通整个牧场的每一块田地所需要的钱数。

输入输出格式

输入格式:

第1 行为一个整数n。

第2 到n+1 行每行一个整数,从上到下分别为W_1 到W_n。

第n+2 到2n+1 行为一个矩阵,表示需要的经费(P_ij)。

输出格式:

只有一行,为一个整数,表示所需要的钱数。

输入输出样例

输入样例#1: 复制

4
5
4
4
3
0 2 2 2
2 0 3 3
2 3 0 4
2 3 4 0

输出样例#1: 复制

9

说明

John等着用水,你只有1s时间!!!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 310
using namespace std;
int n,fa[maxn],num;
struct node{int from,to,v;bool operator < (const node &a)const{return v<a.v;}
}e[maxn*maxn];
int find(int x){if(x==fa[x])return x;return fa[x]=find(fa[x]);
}
int main(){scanf("%d",&n);int x;for(int i=0;i<=n;i++)fa[i]=i;for(int i=1;i<=n;i++){scanf("%d",&x);e[++num].from=0;e[num].to=i;e[num].v=x;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){scanf("%d",&x);if(i>j)e[++num].from=i,e[num].to=j,e[num].v=x;}}sort(e+1,e+num+1);int ans=0;for(int i=1;i<=num;i++){int f1=find(e[i].from),f2=find(e[i].to);if(f1!=f2){ans+=e[i].v;fa[f1]=f2;}}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/thmyl/p/8977312.html

洛谷P1550 [USACO08OCT]打井Watering Hole相关推荐

  1. Luogu P1550 [USACO08OCT]打井Watering Hole

    0号结点:农夫John山泉天然矿泉水( by Luogu第一篇题解 #include<cstdio> #include<cstring> #include<algorit ...

  2. P1550 [USACO08OCT]打井Watering Hole

    传送门 如果没有挖井只是联通所有点就是最小生成树 但是有挖井,我们需要转换一下 把挖井操作看成 0 号点连一条边过去 然后还是最小生成树.. 因为是稠密图,所以用 prim 算法来求最小生成树 #in ...

  3. [bzoj1601]灌水(洛谷P1550)

    [USACO08OCT]Watering Hole G 洛谷灌水区 传送门 D e s c r i p t i o n Description Description Farmer John已经决定把 ...

  4. 洛谷 P1550 浇水

    洛谷 1550 浇水 题目背景 John的农场缺水了!!! 题目描述 Farmer John has decided to bring water to his N (1 <= N <= ...

  5. 洛谷P1550 打井

    题目背景:考完试回来发现了一道原题QAQ 题目背景 John的农场缺水了!!! 题目描述 农民John 决定将水引入到他的n(1<=n<=300)个牧场.他准备通过挖若 干井,并在各块田中 ...

  6. 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储

    P1428 小鱼比可爱 小鱼比可爱 - 洛谷 P1427 小鱼的数字游戏 小鱼的数字游戏 - 洛谷 P5727 [深基5.例3]冰雹猜想 [深基5.例3]冰雹猜想 - 洛谷 P5727 [深基5.例3 ...

  7. 洛谷题目按难度点评---入门难度

    洛谷题目按难度点评---入门难度 1.p1421 小玉买文具 难度:入门难度 考点:输入,输出,整数的四则运算 适用:小学生 #include <stdio.h> int main(){ ...

  8. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  9. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

最新文章

  1. ASP.NET Core 源码阅读笔记(5) ---Microsoft.AspNetCore.Routing路由
  2. scp错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  3. unity 公用的方法库
  4. 在.NET Core 中使用 FluentValidation 进行规则验证
  5. Python3 爬虫学习笔记 C04 【自动化测试工具 Selenium】
  6. ado.net mysql 事务_ADO.NET事务
  7. matlab运行时风扇,TCFD和CAESES耦合优化案例-轴流风扇
  8. localhost改成想要的IP方法
  9. level shifter和isolation cell如何摆放
  10. Linux -- 搜狗输入法安装完成之后的设置
  11. 6.22 android计算字符高度宽度,红蓝3D图片的制作原理及NDK生成实现
  12. nvme分区选mbr还是guid_win7安装系统硬盘模式mbr和guid选哪个?
  13. ubuntu20.04系统安装vmtool工具
  14. 第11课:生活中的组合模式——自己组装电脑
  15. 周一见!距离阿里巴巴开源开放周还有3天
  16. geth配置中,genesis.json的几个问题
  17. 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
  18. 如何友好的判断微信已被删除或拉黑,不留痕迹,无需插件
  19. 西门子WINCC日常问题记录
  20. 【电信学】【2013】宽带隔离双端口MIMO天线的设计与分析

热门文章

  1. 【Datawhale-Python】Task1
  2. 2022-2028中国快时尚服装市场竞争及发展前景预测报告
  3. 【Spring】ioc的常用注解
  4. 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
  5. LeetCode简单题之七进制数
  6. Cache 与Memory架构及数据交互
  7. MLIR: 编译器基础架构重定义
  8. LCD: 2D-3D匹配算法
  9. 马斯克如何颠覆航天? 1/5385成本,c++和python编程!
  10. 2021年大数据Flink(十八):Flink Window操作