数据结构实验之图论六:村村通公路
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。
Input
连续多组数据输入,每组数据包括村落数目N(N <= 1000)和可供选择的道路数目M(M <= 3000),随后M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个村庄的编号和修建该道路的预算成本,村庄从1~N编号。
Output
输出使每个村庄都有公路连通所需要的最低成本,如果输入数据不能使所有村庄畅通,则输出-1,表示有些村庄之间没有路连通。
Sample Input
5 8
1 2 12
1 3 9
1 4 11
1 5 3
2 3 6
2 4 9
3 4 4
4 5 6
Sample Output
19
prim算法基本思想:
对于一个给定的图V,设置一个防护罩集合S来存放已被访问过的顶点,
然后执行n次以下步骤:
1,每次从V-S的集合中寻找与防护罩S最近的一个点u,访问该点u,将该点加入防护罩,
同时把这条最短边加入到最小生成树中。
2,如果能优化的话优化各顶点到当前最新防护罩的距离。具体做法为以当前的顶点u为参照点,看是否可以优化V-S集合中的点到防护罩的最小距离。

慎用memset,此题出错。
改用fill(d,d+MAXV,INF)
fill(bain[0],bian[0]+MAXV*MAXV,INF)
**/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXV=1001;
const int INF=1000000000;
int n;
int bian[MAXV][MAXV],d[MAXV],vis[MAXV];///分别记录权值,到防护罩的距离,访问位状态
int prim()
{//memset(d,INF,sizeof(d));fill(d,d+MAXV,INF);d[1]=0;                   //先以点1为初始的防护罩集合int ans=0;              for(int i=1;i<=n;i++){int u=-1,min=INF;for(int j=1;j<=n;j++){if(vis[j]==0&&d[j]<min){u=j;min=d[j];}}if(u==-1)return -1;vis[u]=1;ans+=d[u];///优化与u相连的未访问的点v到集合的最短距离for(int v=1;v<=n;v++){if(vis[v]==0&&bian[u][v]!=INF&&bian[u][v]<d[v]){d[v]=bian[u][v];}}}return ans;
}
int main()
{
int m,a,b,c;
while(cin>>n>>m)
{fill(bian[0],bian[0]+MAXV*MAXV,INF);fill(vis,vis+MAXV,0);for(int i=0;i<m;i++){cin>>a>>b>>c;bian[a][b]=bian[b][a]=c;}int s=prim();cout<<s<<endl;
}
return 0;
}

最小生成树--通公路问题相关推荐

  1. 数据结构实验之图论六:村村通公路(最小生成树Prim/Kruskal)

    Description 当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出 ...

  2. DS村村通工程(Kruskal算法)

    题目描述 "村村通"是国家一个系统工程,其包涵有:公路.电力.生活和饮用水.电话网.有线电视网.互联网等等. 村村通公路工程,是国家为构建和谐社会,支持新农村建设的一项重大举措,是 ...

  3. DS村村通工程(Prim算法)

    题目描述 "村村通"是国家一个系统工程,其包涵有:公路.电力.生活和饮用水.电话网.有线电视网.互联网等等. 村村通公路工程,是国家为构建和谐社会,支持新农村建设的一项重大举措,是 ...

  4. 村村通工程(Prim算法)

    目录 题目描述 思路分析 AC代码 题目描述 "村村通"是国家一个系统工程,其包涵有:公路.电力.生活和饮用水.电话网.有线电视网.互联网等等. 村村通公路工程,是国家为构建和谐社 ...

  5. 双一次算法作业hhhhhhhhh

    目录 A:合并果子 B:村村通工程预算 C:最短距离 A:合并果子 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆.每一次合并, ...

  6. 中国千家主要规划设计勘察单位

    中国千家主要规划设计勘察单位 2005年11月29日 点击数:10028   中央单位 ·中国城市规划设计研究院 ·中国建筑设计研究院 ·中铁工程设计咨询集团有限公司 ·中国有色工程设计研究总院 ·核 ...

  7. 京东2020年Q2财报数据亮眼:超2000亿净收入背后供应链物流价值释放

    8月17日,京东集团发布2020年Q2财报:2020年第二季度实现净收入2011亿元人民币(约285亿美元),同比增长33.8%,创下京东近10个季度以来的新高,并首次实现单季净收入超2000亿元人民 ...

  8. 春联大全·七字联(1)

    喜爆千声歌盛世 喜鹊登枝迎新岁 雄鸡喜唱升平日 金鸡三遍报新春 金鸡起舞报福音 志士欢歌改革年 把酒当歌歌盛世 保驾护航奔富路 癸戴草头朝赤日 闻鸡起舞舞新春 昂头振翼唱东风 酉添春水上朱颜 猴奋已教 ...

  9. 五一出游-徒步旅行主旋律

    十大徒步线路第十名:徒步漓江--领略"甲天下"的风光 "桂林山水甲天下",此语尽人皆知.据说桂林是外国游客们到中国旅游最向往的四个地方之一.不过大部分的人去桂 ...

最新文章

  1. JAVA如何实现发送短信
  2. 提高网站访问性能——Tomcat优化
  3. 19 个 JavaScript 常用的简写技术
  4. oracle多次发运,Oracle EBS 关于发运收集整理
  5. 替 ASP.NET 的 Table 控件換裝
  6. python支付系统开发,python支付整合开发包
  7. 数据scale过程用model更方便,可以保存到本地
  8. get_metrology_object_result_contour查询计量对象的结果轮廓
  9. 一步步分析-C语言如何面向对象编程
  10. OWIN之中间件用法示例
  11. 浅谈 PHP 与手机 APP 开发(API 接口开发) 1
  12. C语言 字符串大小写转换
  13. mysql从文本导入表_[Mysql] 用load data将文本文件数据导入到表
  14. tensorflow精进之路(十八)——python3网络爬虫(中)
  15. 获取文件绝对路径最后的文件夹名称
  16. AutoRunner录制过程中发现对象录制不了
  17. pytdx 获取板块指数_是否可以获得板块指数8806XX成分股?
  18. 微信小程序安全需求基线
  19. boder-radius属性
  20. 中国移动“梧桐杯”大数据应用创新大赛智慧金融初赛TOP1开源

热门文章

  1. python tkinter grid布局
  2. java第十版基础篇答案第九章_《Java语言程序设计》(基础篇原书第10版)第九章复习题答案...
  3. stream流常用方法_Java8 中用法优雅的 Stream,怪不得我之前总是看不懂别人写的代码!...
  4. Matplotlib库入门
  5. Hakase and Nano 博弈
  6. s-palindrome
  7. Python中替换元素
  8. Python之list添加新元素
  9. R语言使用strsplit函数遇到non-character argument怎么解决
  10. [转]摧毁一个人可以有多简单