博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
引水工程
阅读量:6938 次
发布时间:2019-06-27

本文共 2209 字,大约阅读时间需要 7 分钟。

Description

南水北调工程是优化水资源配置、促进区域协调发展的基础性工程,是新中国成立以来投资额最大、涉及面最广的战略性工程,事关中华民族长远发展。 ,旨在缓解中国地区水资源短缺的国家战略性工程。就是把中国长江流域丰盈的水资源抽调一部分送到华北和西北地区。我国南涝北旱,南水北调工程通过跨流域的合理配置,促进南北方经济、社会与人口、资源、环境的协调发展。

整个工程分东线、中线、西线三条调水线。东线工程位于东部,因地势低需抽水北送至。中线工程从与其最大支流交汇处的引水,自流供水给大部分地区,20多座大中城市;西线工程在上,由上游向黄河上游补水。

现在有N个区域需要建设水资源工程,它们可以自建水库解决缺水问题,也可以从已有水源的地区建立管道引水过来。当然,这些建设都需要大量投资。

你能不能给出一个优化水资源配置方案,在保证每个区域都能用上水的前提下,使得整个引水工程费用最低。

 

Input

第一行:     K           表示有多少组测试数据。

接下来对每组测试数据:

1:      N               表示有N个区域 1<=N<=300 

行:    W1  W2  . WN  Wi表示第i区域自建水库需要的费用

再有N行:   Pi1  Pi2   ….  Pin   Pij表示建立第i区域与j区域引水管道的费用

1k10      1N200    1Wi  Pij100000    Pij = Pji   Pii=0 (i=1,…, N)

  所有数据都是整数。 数据之间有一个空格。

 

Output

对于每组测试数据,输出占一行,即建立整个引水工程的最小费用。

Sample Input

155 4 4 3 60 2 2 2 22 0 3 3 32 3 0 4 52 3 4 0 12 3 5 1 0

Sample Output

10
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 const int N = 1005; 9 const int inf = 0x3f3f3f3f;10 typedef long long LL;11 int vis[N], ac[N], n;12 int as[N][N], dis[N], pre[N];13 void init()14 {15 memset(vis, 0, sizeof(vis));16 memset(dis, 0, sizeof(dis));17 memset(pre, 0, sizeof(pre));18 for(int i = 0; i < N; i++)19 for(int j = 0; j < N; j++)20 if(i == j) as[i][j] = 0;21 else as[i][j] = inf;22 }23 LL prime()24 {25 int i, j, index;26 LL mini, ans = 0;27 for(i = 1; i < n; i++)28 {29 mini = inf;30 for(j = 1; j <= n; j++)31 {32 if(vis[j] == 0 && dis[j] < mini)33 {34 mini = dis[j];35 index = j;36 }37 }38 vis[index] = 1;39 //ans += ac[index] + ac[pre[index]];40 for(j = 1; j <= n; j++)41 {42 if(vis[j] == 0 && dis[j] > as[index][j])43 {44 dis[j] = as[index][j];45 pre[j] = index;46 }47 }48 }49 for(i = 1; i <= n; i++)50 ans += dis[i];51 return ans;52 }53 int main()54 {55 int i, j, t;56 LL ans;57 scanf("%d", &t);58 while(t--)59 {60 init();61 scanf("%d", &n);62 for(i = 1; i <= n; i++)63 scanf("%d", &dis[i]);64 65 for(i = 1; i <= n; i++)66 for(j = 1; j <= n; j++)67 {68 scanf("%d", &as[i][j]);69 //as[i][j] += ac[i];70 // as[i][j] += ac[j];71 }72 ans = prime();73 printf("%lld\n", ans);74 }75 return 0;76 }
最小生成树

 

转载于:https://www.cnblogs.com/PersistFaith/p/4816825.html

你可能感兴趣的文章
阿里的分布式持续集成系统-reliable
查看>>
【转】单日峰值2T发送量邮件营销平台实践经验
查看>>
Dell Compellent的一些缺陷
查看>>
我的友情链接
查看>>
分布式消息系统 Kafka 简介
查看>>
内部控制
查看>>
iOS地图选址
查看>>
我的友情链接
查看>>
自动监控linux服务器负载并重启Web服务的脚本
查看>>
四、Windows Server 2012R2 Hyper-v虚拟交换机的创建与管理
查看>>
java 运算顺序
查看>>
天涯LVS部署
查看>>
eclipse不能自动编译工程的解决方法
查看>>
最好用的cisco路由模拟器 debianIOL
查看>>
Shpinx在PHPCMS里的使用及配置
查看>>
Linux Oracle Rac 10G 搭建& Patch
查看>>
django models.py模块的外部引用
查看>>
VMware虚拟化技术培训(8) 虚拟机管理之二
查看>>
spring内部各模块jar包依赖
查看>>
Apache与Nginx网络模型对比
查看>>