[Usaco2008 Oct]灌水
题目描述
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跑一遍就好了。
![](/assets/blank.gif)
![](/assets/blank.gif)
#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]灌水相关推荐
- bzoj1601: [Usaco2008 Oct]灌水
经典延伸最小生成树问题... #include<cstdio> #include<cstring> #include<cctype> #include<alg ...
- bzoj 1601: [Usaco2008 Oct]灌水(最小生成树)
1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 1978 Solved: 1297 [Submit][ ...
- bzoj1601 [Usaco2008 Oct]灌水
Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. ...
- BZOJ 1601 [Usaco2008 Oct]灌水 (最小生成树)
题意 Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要 ...
- bzoj1601【Usaco2008 Oct】灌水
1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec Memory Limit: 162 MB Submit: 1589 Solved: 1035 [Submit][ ...
- BZOJ 1619 [Usaco2008 Nov]Guarding the Farm 保卫牧场:dfs【灌水】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1619 题意: 给你一个n*m的地形图,位置(x,y)的海拔为h[x][y]. 一个山顶的定 ...
- 史上最强灌水:奇葩的MEGA 精选 科学网薛宇老师
http://blog.sciencenet.cn/blog-404304-725339.html 做学术的人,如果不是全部,那起码99.99...%的人绝对是强烈反感灌水.所以前辈们总是循循善诱的教 ...
- 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源:青塔人才.知乎Molecule 7月10日,来自徐州工程学 ...
- 别再SOTA了,那叫“微调”!Science发文炮轰论文灌水
点击上方"视学算法",选择加"星标"置顶 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI算法的发展,真有那么迅猛吗? ...
最新文章
- matlab科学计算及分析,matlab科学计算
- 2019-06-26 某小型支付公司面试经历
- java 越来越慢_浅析Java语言慢的原因
- 穿背心的老院士,86岁,重病,还在敲代码,单手!
- 【定时同步系列3】8PSK调制+OM定时+信号分段处理+误码率曲线之MATLAB仿真(实信号模型)
- c语言如何实现不定参数,C语言中不定参数的实现
- 电力系统matlab实验报告,基于matlab语言计算电力系统暂态稳定仿真程序实验报告.docx...
- c语言 字节 半字 字,PLC的位,半字节,字节,字介绍
- 网上商城连接mysql_做一个网上网上购物网站,请问怎么连接数据库?
- nodepad++通过正则表达式,删除带有特殊字符的某一行
- 一、Oracle11g简介
- 新计算机安装系统后鼠标键盘都无反应处理
- 用python实现小说的平均句长,词性占比,关键词,标点符号,词形统计
- 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
- Python创建使用虚拟环境
- 创建采购订单BADI流程
- 信息系统项目管理师笔记
- 中国银行的海外IT建设之路
- 【Web-南邮CTF】Web-CTF入门第1天
- 计算机系统密码保护,安装程序需要密码、安装程序密码保护的方法
热门文章
- Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
- 语音写出(wavwrite)
- 逻辑函数(all(),any())
- yxy和志愿者小姐姐番外篇之大宝宝123追番记(补题,淘汰赛)
- 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
- OO设计原则总结[转载]
- Calibre 3.38.1 下载 Runoob 网站中的《Python 2 教程》的 Recipe
- Git之hotfix热修复分支
- 使用 SQLServer On Linux 作为开发数据库遇到的编码问题
- fastRPC的数据库服务