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

题意

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

思路

很经典的最小生成树模型……很久没做最小生成树一下子没想出来TAT…… 首先得有个水源吧,设个虚节点当水源,然后连向每个土地,权值为建造水库的花费,其他的照常建图,然后求最小生成树就行了。

代码

  [cpp] #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <set> #include <stack> #include <queue> #define MID(x,y) ((x+y)/2) #define MEM(a,b) memset(a,b,sizeof(a)) #define REP(i, begin, end) for (int i = begin; i <= end; i ++) using namespace std; const int MAX = 305; struct edge{ int v, w; edge(){ } edge(int _v, int _w){ v = _v; w = _w; } }; struct MST{ vector <edge> adj[MAX]; int dist[MAX]; bool vis[MAX]; priority_queue <pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > PQ; void init(int n){ for (int i = 0; i <= n; i ++){ adj[i].clear(); vis[i] = false; } } void add_edge(int u, int v, int w){ adj[u].push_back(edge(v, w)); adj[v].push_back(edge(u, w)); } int solve(int s, int n){ for (int i = 0; i <= n; i ++) dist[i] = 0x3fffffff; while(!PQ.empty()) PQ.pop(); dist[s] = 0; PQ.push(make_pair(0, s)); while(!PQ.empty()){ int u = PQ.top().second; PQ.pop(); vis[u] = true; for (int i = 0; i < (int)adj[u].size(); i ++){ int v = adj[u][i].v, w = adj[u][i].w; if (!vis[v] && dist[v] > w){ dist[v] = w; PQ.push(make_pair(w, v)); } } } int res = 0; for (int i = 1; i <= n; i ++) res += dist[i]; return res; } }prim; int main(){ //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int n; scanf("%d", &n); prim.init(n+1); for (int i = 1; i <= n; i ++){ int tmp; scanf("%d", &tmp); prim.add_edge(n+1, i, tmp); } for (int i = 1; i <= n; i ++){ for (int j = 1; j <= n; j ++){ int tmp; scanf("%d", &tmp); if (i >= j) continue; prim.add_edge(i, j, tmp); } } printf("%d\n", prim.solve(n+1, n+1)); return 0; } [/cpp]

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114351.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab mxarray array,[Matlab]MxArray与MwArray使用区别

引子在外部编程语言与matlab的交互中&#xff0c;Array是最单元的交互元素&#xff0c;怎么都绕不过去。在matlab提供的Array接口有两个&#xff0c;一个是C的MxArray, 另一个是Cpp(C)的MwArray.看下两着的分别介绍&#xff1a;mxArray&#xff1a;Matlab C 函数库的结构体mwAr…

NSARRAY的 内存管理

一个对象加入到nsarray里内存计数器会1,当这个nsarrayrelease的时候,回自动减1,程序员不需要管理这方面的内存.转载于:https://www.cnblogs.com/gm-lotus/p/3349509.html

blender怎么移动骨骼,Blender学习笔记-(015)创建骨骼绑定及权重绘制操作详解

骨骼创建绑定具体操作如下&#xff1a;1&#xff1a; 【ShiftA】创建基础骨骼。(也可以通过打开Blender的插件Rigging&#xff1a;Rigify&#xff0c;生成自定义骨骼)2&#xff1a;点击骨骼&#xff0c;按【Tab】键进入编辑模式&#xff0c;选中创建骨骼端&#xff0c;按【E】拖…

[MySQL binlog实战] 增量同步与数据搜索~从入门到精通

学习基础知识&#xff0c;并落实到实际场景&#xff08;增量同步数据搜索&#xff09; 对基础知识不感兴趣的&#xff0c;可以直接跳到应用场景 文章目录 binlog是什么简介产生方式文件格式statementrowmixed 怎么办开启 binlog查看 binlog其他查看相关命令运维查看 binlog设置…

从硬核科幻小说《三体》中看嵌入式

1 2 3 4 5 6 7 8 9 转载于:https://www.cnblogs.com/OleNet/p/3352189.html

matlab潮流计算求节点自导纳,大神们,求个电力系统潮流计算的matlab程序。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼ninput(Please input n\n); %n表示系统的节点数d0input(Please input d0\n); %d0表示系统的误差minput(Please inpit m\n); %m表示系统的pq节点的个数p0ones(n-1,1);q0ones(m,1);d1;dpvones(n-1,1);dqvones(m,1);dpzeros(n-1,1);dq…

早晨爬山,三餐自备——程序员也可以这样生活、工作

没有参加工作以前&#xff0c;在香港及国外的电影里经常会有在家吃了自做早餐后再悠闲的去上班的情节&#xff0c;当时充满了向往。 从事程序开发以来&#xff0c;电脑前坐12个小时是常态&#xff0c;坐14个小时不稀奇&#xff0c;坐14个小时以上十有一二。而早餐&#xff1f;经…

php快速排序和二分查找法,二分查找及快速排序

小朋友二分查找和快速排序思想上有很大的相似度&#xff0c;就是做一个起始点&#xff0c;开始往左右做动作&#xff0c;也同样是由递归实现&#xff0c;当然也可以不用递归实现。但是我觉得也不能用php内置特有的函数- -&#xff0c;我找了很多php的快速排序&#xff0c;几乎都…

php 三目格式,PHP-您使用哪种编码风格的三元运算符?

PHP-您使用哪种编码风格的三元运算符&#xff1f;如果很短&#xff0c;我将其放在一行中。 最近&#xff0c;我一直在将这种样式用于较长或嵌套的三元运算符表达式。 一个人为的例子&#xff1a;$value ( $a $b )? true value # 1: ( $a $c )? true value # 2: false valu…

extractCSS – 帮助你从 HTML 中快速分离出 CSS

extractCSS 是一个免费的基于 Web 的应用程序&#xff0c;能够从 HTML 中提取风格相关的信息&#xff0c;包括 id、class 和内联样式&#xff0c;而且输出可以定制&#xff08;缩进和括号的用法&#xff09;。该工具非常有用&#xff0c;当我们快速创建一个使用了内联样式的 HT…

php项目安装器,php项目安装器程序源码,php通用安装程序

php项目安装器程序源码,php通用安装程序一个安装器的源码&#xff0c;最简单的看一下emlog 也可以&#xff01;文件目录结构index.php 程序首页│ ├─conf 安装后配置文件目录├─data    目录写入测试目录└─install 安装程序目录 │ index.php   安装程…

7zip File: How to Uncompress 7z files on Ubuntu, Debian, Fedora

转&#xff1a;http://www.thegeekstuff.com/2010/04/7z-7zip-7za-file-compression/ Question: How do I uncompress a *.7z file ( 7zip file ) in UNIX / Linux ? Can you explain with a simple example? Answer: Use 7za command to unzip a 7z file ( 7zip file ) on U…

php找不到邮件类,SMTP无法使用php邮件程序类

我有两个帐户&#xff1a;no-replyweddinggrabs.comno-replyappovio.com和传入POP3&#xff1a;pop.secureserver.net(995)传出SMTP&#xff1a;smtpout.secureserver.net(80,3535,25,465)这些工作使用电子邮件客户端,如Thunderbird,post-box等,但不使用php-mailer&#xff1a;…

Python开发环境Wing IDE 5.0测试第八版发布

Wing IDE是著名的Python开发工具&#xff0c;是Wingware公司的主要产品。从1999年起&#xff0c;Wingware公司便开始专注于Python开发设计。Wing IDE在十几年的发展中&#xff0c;不管完善。其强大设计理念包括&#xff1a;编辑工具丰富&#xff0c;编译测试版权一体化&#xf…

PHP5比PHP4,php4和php5的配置异同比较

技术文章配置php4或者php5的过程中&#xff0c;php4&#xff0c;5的配置的步骤大致一样的&#xff0c;但是配置内容有一些差别。在LINUX等环境下编译&#xff0c;一般来说&#xff0c;只要编译的选项正确&#xff0c;配置也就正确了&#xff1b;在windows配置则需要注意以下不同…

matlab文件序号超出511,求教一段matlab的代码 - 数学 - 小木虫 - 学术 科研 互动社区...

不知楼主说的没法求出优化值&#xff0c;是什么意思。是报错还是怎么。我也是刚接触优化&#xff0c;觉得楼主的错误可能是在&#xff1a;主函数里 A[-1;1];的括号中间应该用逗号&#xff0c;而不是分号。即改为A[-1,1];我对你的程序做了一点改动&#xff0c;如下&#xff1a;f…

系统地学习JavaScript

入门 学会DIVCSS布局使用DIVCSS布局标准网页&#xff0c;可以使前端XHTML代码更少、结构更清晰&#xff0c;这有利于轻松用JavaScript操作DOM&#xff0c;比如&#xff0c;要展示一个3 行3列的列表&#xff0c;如果用传统的表格布局&#xff0c;现在要你用JavaScript动态生成这…

matlab this指针,C++ this指针(直戳本质)

为了能让大家看清 this 指针的本质&#xff0c;我们会先讲一点 C 的历史——C 程序到C程序的翻译过程。C 程序到C程序的翻译C 是在C语言的基础上发展而来的&#xff0c;第一个 C 的编译器实际上是将 C 程序翻译成C语言程序&#xff0c;然后再用C语言编译器进行编译。C语言没有类…

WPF自定义控件 —— 装饰器

摘自&#xff1a;http://www.cnblogs.com/Curry/archive/2009/09/16/1567757.html 顾名思义就是装饰用的&#xff0c;也就是说不改变原有的控件结构&#xff0c;但可以为控件添加一些新的功能&#xff0c;或是为控件的显示外观增加些东西。如MSDN中的例子&#xff1a; 本来Text…