nyoj 1239——引水工程——————【最小生成树 prim】
引水工程
- 描述
-
南水北调工程是优化水资源配置、促进区域协调发展的基础性工程,是新中国成立以来投资额最大、涉及面最广的战略性工程,事关中华民族长远发展。“南水北调工程”,旨在缓解中国华北和西北地区水资源短缺的国家战略性工程。就是把中国长江流域丰盈的水资源抽调一部分送到华北和西北地区。我国南涝北旱,南水北调工程通过跨流域的水资源合理配置,促进南北方经济、社会与人口、资源、环境的协调发展。
整个工程分东线、中线、西线三条调水线。东线工程位于东部,因地势低需抽水北送至华北地区。中线工程从汉水与其最大支流丹江交汇处的丹江口水库引水,自流供水给黄淮海平原大部分地区,20多座大中城市;西线工程在青藏高原上,由长江上游向黄河上游补水。
现在有N个区域需要建设水资源工程,它们可以自建水库解决缺水问题,也可以从已有水源的地区建立管道引水过来。当然,这些建设都需要大量投资。
你能不能给出一个优化水资源配置方案,在保证每个区域都能用上水的前提下,使得整个引水工程费用最低。
- 输入
- 第一行: K 表示有多少组测试数据。
接下来对每组测试数据:
第1行: N 表示有N个区域( 1<=N<=300 )
第2 行: W1 W2 …. WN Wi表示第i个区域自建水库需要的费用
再有N行: Pi1 Pi2 …. Pin Pij表示建立第i个区域与第j个区域引水管道的费用 - 输出
- 对于每组测试数据,输出占一行,即建立整个引水工程的最小费用。
- 样例输入
-
1
5
5 4 4 3 6
0 2 2 2 2
2 0 3 3 3
2 3 0 4 5
2 3 4 0 1
2 3 5 1 0 - 样例输出
-
10
- 来源
- 第八届河南省程序设计大赛
- 解题思路:只需要在prim求和的时候加min(w[s], minc)即可。表示考虑到了该点是自建水库好还是引水过来好。就是转化。
-
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<string>
#include<iostream>
#include<queue>
#include<vector>
#include<set>
using namespace std;
typedef long long LL;
#define mid (L+R)/2
#define lson rt*2,L,mid
#define rson rt*2+1,mid+1,R
const int maxn = 1e3 + 300;
const LL INF = 0x3f3f3f3f;
int vis[maxn], lowc[maxn], cost[maxn][maxn];
int w[maxn];
int n;
int prim(int id){
memset(vis,0,sizeof(vis));
int retsum = 0;
vis[id] = 1;
for(int i = 1; i <= n; i++){
lowc[i] = cost[id][i];
}
retsum = w[id];
for(int i = 1; i < n; i++){
int s = -1;
int minc = INF;
for(int j = 1; j <= n; j++){
if(!vis[j]&&lowc[j] < minc){
minc = lowc[j];
s = j;
}
}
// printf("%d+++\n",s);
retsum += min(minc,w[s]);
vis[s] = 1;
for(int j = 1; j <= n; j++){
if(!vis[j] && lowc[j] > cost[s][j]){
lowc[j] = cost[s][j];
}
}
}
return retsum;
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
int m = 0, val;
int sel = INF, id = 0;
for(int i = 1; i <= n; i++){
scanf("%d",&w[i]);
if(w[i] < sel){
sel = w[i]; id = i;
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
scanf("%d",&cost[i][j]);
if(cost[i][j] == 0) cost[i][j] = INF;
}
}
int res = prim(id);
printf("%d\n",res);
}
return 0;
}
nyoj 1239——引水工程——————【最小生成树 prim】的更多相关文章
- Nyoj 引水工程(最小生成树)
描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事关中华民族长远发展.“南水北调工程”,旨在缓解中国华北和西北地区水资源短缺的国家 ...
- nyoj 1239 引水project (河南省第八届acm程序设计大赛)
题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="col ...
- NYOJ 38 布线问题 (最小生成树 prim)
题目链接 描述 南阳理工学院要进行用电线路改造,现在校长要求设计师设计出一种布线方式,该布线方式需要满足以下条件: 1.把所有的楼都供上电. 2.所用电线花费最少 输入 第一行是一个整数n表示有n组测 ...
- 引水工程 Kruskal + Prim
Kruskal题解 : 以案例输入为例 有五个缺水地区 , 这个个缺水地区之间建立联系的费用已经给出 并且之间水库的费用也已经给出 , 自己水库也已看为 是另一个 点 , 这样就有了 6 个点 , 这 ...
- POJ-2421Constructing Roads,又是最小生成树,和第八届河南省赛的引水工程惊人的相似,并查集与最小生成树的灵活与能用,水过~~~
Constructing Roads Time Limit: 2000MS Memory Limit: 65536K Description There are N v ...
- 第八届河南省赛D.引水工程(kruthcra+prime)
D.引水工程 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 118 Solved: 41 [Submit][Status][Web Board] D ...
- zufe oj 引水工程( 巧妙地把在i建水设为e[0][i])
引水工程 时间限制: 3 Sec 内存限制: 128 MB提交: 11 解决: 6[提交][状态][讨论版] 题目描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来 ...
- zzuoj 10409 10409: D.引水工程
10409: D.引水工程 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 96 Solved: 34[Submit][Status][Web Boar ...
- 河南省第八届ACM省赛---引水工程
引水工程 时间限制:2000 ms | 内存限制:65535 KB 难度: 描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事 ...
随机推荐
- 以太坊系列之十四: solidity特殊函数
solidity中的特殊函数 括号里面有类型和名字的是参数,只有类型是返回值. block.blockhash(uint blockNumber) returns (bytes32): hash of ...
- 运维利器:钉钉机器人脚本告警(Linux Python 篇)
写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...
- 《C#多线程编程实战》2.9 ReaderWirterLockSlim
可以多线程进行读写操作. 比如书上的示例代码是三个线程进行读取,两个线程进行写入工作. 如果 用之前学过的也不是不可以用,但是用的有些多. 所有ReaderWirterLockSlim专门为此而来. ...
- RadASM的主题更换!
RadASM的代码编辑器默认背景色位黑色,我很不习惯,决定更换它,按照下面步骤,我把RadASM的代码编辑器默认背景色成功更换成了白色: 1, 2, 3, 4,
- day08.4-samba共享网盘服务
1. 安装软件:yum install samba -y 2. 新建共享目录物理路径:mkdir /zizaijiapu 修改配置文件:vim /etc/samba/smb.con ...
- LNMP(linux+nginx+mysql+php)服务器环境配置【转载】
本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.h ...
- 使用python-docx生成Word文档
首先是安装python-docx:(centos环境) pip install python-docx 基本方法使用: from docx import Document from docx.shar ...
- spring 学习(三):aop 学习
spring 学习(三):aop 学习 aop 概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代 ...
- 5. 常见C语言字符串库函数的使用及实现
1. strncat 函数: [函数原型]#include <string.h> char *strncat( char *str1, const char *str2, size_t c ...
- SQL语句优化 -- 以Mysql为例
本文参考下面的文章: 1: [真·干货]MySQL 索引及优化实战 2: Mysql语句的执行过程 3: sql优化的几种方法 我将 sql语句优化分为三个方面,(此处不包括 业务逻辑的 ...