问题描述:

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本

Input

测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N 
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。

Output

对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。

Sample Input

3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100

Sample Output

3
?

题目题意:题目给我们m个点之间的几条路,问有没有最小生成树,有输出结果,没有输出?

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;const int INF=0x3f3f3f3f;
const int maxn=105;
int cost[maxn][maxn];
int mincost[maxn];
bool vis[maxn];
int V,res;//答案void prim()
{for (int i=1;i<=V;i++) {mincost[i]=INF;vis[i]=false;}res=0;mincost[1]=0;while (true) {int v=-1;for (int u=1;u<=V;u++) {if (!vis[u]&&(v==-1||mincost[u]<mincost[v])) v=u;}if (v==-1)  break;vis[v]=true;res+=mincost[v];for (int u=1;u<=V;u++)mincost[u]=min(mincost[u],cost[v][u]);}
}
int main()
{int m;while (scanf("%d%d",&m,&V)!=EOF) {if (m==0) break;for (int i=1;i<=V;i++)for (int j=1;j<=V;j++)cost[i][j]=INF;for (int i=0;i<m;i++) {int a,b,c;scanf("%d%d%d",&a,&b,&c);cost[a][b]=cost[b][a]=c;}prim();if (res>INF)//大于INF就没有结果printf("?\n");elseprintf("%d\n",res);}return 0;
}

HDU 1863 (图论基础prim算法)相关推荐

  1. 图论——Dijkstra+prim算法涉及到的优先队列(二叉堆)

    [0]README 0.1)为什么有这篇文章?因为 Dijkstra算法的优先队列实现 涉及到了一种新的数据结构,即优先队列(二叉堆)的操作需要更改以适应这种新的数据结构,我们暂且吧它定义为Dista ...

  2. prim算法_自动生成随机迷宫(1)prim算法

          "程序 = 数据  + 算法",一款好的作品不单单是代码的堆砌,还有其灵魂的部分,那就是算法:算法是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机 ...

  3. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

  4. HDU 1863畅通工程(最小生成树)(prim算法)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. 图论基础知识与常见图处理算法

    本笔记涉及代码:https://github.com/hackeryang/Algorithms-Fourth-Edition-Exercises 1.图论应用广泛,例如地图中规划最短路线.搜索引擎中 ...

  6. 【数据结构与算法】图论基础与图存储结构

    前言 由于后续更新好几篇文章都涉及到 图 这种数据结构,因此打算先普及一下 图 的相关理论支持,如果后面的相关内容有些点不太容易理解,可以查阅此篇文章.本文不建议一口气阅读完毕,可以先浏览一遍,在后续 ...

  7. prim求最短路径C语言,[图论]Prim算法求最小支撑树和最短路径

    这个是以前所学,现在总结成博文一篇. 对于图论中的求解最小支撑树问题和最短路径问题都有比较经典的算法,比如最小支撑树可以采用"破圈法",求解最短路径可以用"Dijkstr ...

  8. 图论(prim,kruskal,Dijsktra三大算法)

    prim 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graphtheor ...

  9. 最小生成树(Kruskal和Prim算法基础讲述)

    如果有啊哈算法这本书的话建议去看那本书上的第八章第一节和第二小节,讲的都特别的详细,而且也是使用了大量的图画来帮助理解,我也是今天中午刚有读过那上面的内容,根据模板每种算法做了一道题(也算是体会到算法 ...

最新文章

  1. Linux的watch命令--实时监测命令的运行结果
  2. SharePoint 2010 change home page或者default page
  3. 【示例】Lucene查询索引库编程步骤
  4. python mysqldb安装_解决centos7 安装MySQLdb-python 报错 方案
  5. String使用注意一
  6. bzoj 4184 shallot 时间线建线段树+vector+线性基
  7. Tips--Ubuntu16.04系统安装时无法连接WiFi
  8. python步长为负时的情况
  9. Matlab编程知识点
  10. python四大高阶函数_Python里的高阶函数
  11. 搭建windows的solr6服务器
  12. IP地址格式 点分十进制
  13. 一种FlashBuilder不能启动的解决方法
  14. 关于阿里矢量图标的三种使用方法
  15. 可视化项目管理,项目进度管理必备工具
  16. 经常调试笔记本服务器显示器,瞎折腾!闲置损坏笔记本电脑改造的DIY液晶显示屏!蜗牛星际附件。...
  17. 7.25 10figting!
  18. OpenCV切割大图(边界扩充,全黑图剔除)
  19. OCR目前的发展现状综述
  20. jquery中的event

热门文章

  1. win10系统要求配置_观察者系统还原游戏配置要求高吗?Observer: System Redux硬件一览!...
  2. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧
  3. errorreporting php,php-phpin的error_reporting 22527中的22527是什么
  4. 三种方法查看电脑IP地址是否被占用
  5. c语言for循环1到100奇数和,使用for循环结构编写程序计算1到100之间的奇数之和、偶数之和,输出格式为“1到100奇数和=xxx;1到100偶数和...
  6. [Java]String类基础知识与常用方法总结
  7. stm32 TIM1的CH1N~CH3N、CH1~CH4基本配置
  8. java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell 问题的解决
  9. android之父:安迪*鲁宾
  10. Spectral Clustering