题目描述

Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记。把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库。 建造一个水库需要花费wi(1<=wi<=100000),连接两块土地需要花费Pij(1<=pij<=100000,pij=pji,pii=0). 计算Farmer John所需的最少代价。


输入格式

*第一行:一个数n

*第二行到第n+1行:第i+1行含有一个数wi

*第n+2行到第2n+1行:第n+1+i行有n个被空格分开的数,第j个数代表pij。


输出格式

*第一行:一个单独的数代表最小代价.


样例输入

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

样例输出

9输出详解:Farmer John在第四块土地上建立水库,然后把其他的都连向那一个,这样就要花费3+2+2+2=9

这道题是要把所有的点连在一起,也就是要用最小生成树。直接用kruskal跑一遍就好了。

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 100005;
int n;
struct edge {int x, y, val;
} e[maxn];
int ans, fa[305], t, cnt;
int cmp(const edge &a, const edge &b) {return a.val < b.val;
}
int find(int x) {if(fa[x] != x)fa[x] = find(fa[x]);return fa[x];
}
void get(int x, int y, int w) {cnt++;e[cnt].x = x;e[cnt].y = y;e[cnt].val = w;
}
int main() {scanf("%d", &n);for(int i = 1; i <= n; i++) {fa[i] = i;scanf("%d", &t);get(0,i,t);}for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++) {scanf("%d", &t);if(i != j) {get(i,j,t);}}sort(e + 1,e + cnt + 1,cmp);for(int i = 1; i <= cnt; i++) {if(find(e[i].x) != find(e[i].y)) {fa[find(e[i].x)] = find(e[i].y);ans += e[i].val;}}printf("%d\n", ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/jiqimin/p/10914231.html

[Usaco2008 Oct]灌水相关推荐

  1. bzoj1601: [Usaco2008 Oct]灌水

    经典延伸最小生成树问题... #include<cstdio> #include<cstring> #include<cctype> #include<alg ...

  2. bzoj 1601: [Usaco2008 Oct]灌水(最小生成树)

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1978  Solved: 1297 [Submit][ ...

  3. bzoj1601 [Usaco2008 Oct]灌水

    Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. ...

  4. BZOJ 1601 [Usaco2008 Oct]灌水 (最小生成树)

    题意 Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要 ...

  5. bzoj1601【Usaco2008 Oct】灌水

    1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1589  Solved: 1035 [Submit][ ...

  6. BZOJ 1619 [Usaco2008 Nov]Guarding the Farm 保卫牧场:dfs【灌水】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1619 题意: 给你一个n*m的地形图,位置(x,y)的海拔为h[x][y]. 一个山顶的定 ...

  7. 史上最强灌水:奇葩的MEGA 精选 科学网薛宇老师

    http://blog.sciencenet.cn/blog-404304-725339.html 做学术的人,如果不是全部,那起码99.99...%的人绝对是强烈反感灌水.所以前辈们总是循循善诱的教 ...

  8. 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:青塔人才.知乎Molecule 7月10日,来自徐州工程学 ...

  9. 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水

    点击上方"视学算法",选择加"星标"置顶 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI算法的发展,真有那么迅猛吗? ...

最新文章

  1. matlab科学计算及分析,matlab科学计算
  2. 2019-06-26 某小型支付公司面试经历
  3. java 越来越慢_浅析Java语言慢的原因
  4. 穿背心的老院士,86岁,重病,还在敲代码,单手!
  5. 【定时同步系列3】8PSK调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(实信号模型)
  6. c语言如何实现不定参数,C语言中不定参数的实现
  7. 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...
  8. c语言 字节 半字 字,PLC的位,半字节,字节,字介绍
  9. 网上商城连接mysql_做一个网上网上购物网站,请问怎么连接数据库?
  10. nodepad++通过正则表达式,删除带有特殊字符的某一行
  11. 一、Oracle11g简介
  12. 新计算机安装系统后鼠标键盘都无反应处理
  13. 用python实现小说的平均句长,词性占比,关键词,标点符号,词形统计
  14. 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
  15. Python创建使用虚拟环境
  16. 创建采购订单BADI流程
  17. 信息系统项目管理师笔记
  18. 中国银行的海外IT建设之路
  19. 【Web-南邮CTF】Web-CTF入门第1天
  20. 计算机系统密码保护,安装程序需要密码、安装程序密码保护的方法

热门文章

  1. Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
  2. 语音写出(wavwrite)
  3. 逻辑函数(all(),any())
  4. yxy和志愿者小姐姐番外篇之大宝宝123追番记(补题,淘汰赛)
  5. 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
  6. OO设计原则总结[转载]
  7. Calibre 3.38.1 下载 Runoob 网站中的《Python 2 教程》的 Recipe
  8. Git之hotfix热修复分支
  9. 使用 SQLServer On Linux 作为开发数据库遇到的编码问题
  10. fastRPC的数据库服务