博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小生成树(MST) prim() 算法 kruskal()算法 A - 还是畅通工程
阅读量:5092 次
发布时间:2019-06-13

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

某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 

Input

测试输入包含若干测试用例。

每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。 

当N为0时,输入结束,该用例不被处理。 
Output

对每个测试用例,在1行里输出最小的公路总长度。 

Sample Input

31 2 11 3 22 3 441 2 11 3 41 4 12 3 32 4 23 4 50

Sample Output

35Huge input, scanf is recommended. 下面有一些我写代码时使用到的代码变量: 邻接矩阵(Adjacency Matrix) 无穷大(infinite) 顶点(vertex) 权值(cost) 初始化(initialize) 临时工(temp) 整型最大数值=0x7fffffff AC代码: 1.prim算法
#include
#include
#define N 110#define inf 0x7fffffffint cost[N][N];int ver[N];int n,a,b,l,temp,v,k=1;using namespace std;int initia(){
//顶点及储存权值的邻接矩阵的初始化 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(i==j) cost[i][j]=0; else cost[i][j]=inf; ver[i]=0; } ver[1]=1; return 0;}int prim(){ int sumcost=0,mincost; int temp,v; for(int vsum=1;vsum
>n&&n!=0){ initia(); int t=n*(n-1)/2; while(t--){ cin>>a>>b>>l; cost[a][b]=cost[b][a]=l; } prim(); } return 0;}

用于记录的数组的下标是从1开始的,且注意红色标记地方,vsum的循环次数不要增加,否则会出错!

这里还有一份其他人的代码,红色部分大大减少了运行时的重复次数,没太看懂!

 

#include
#include
#define INF 99999999#define N 110using namespace std;int n,G[N][N];void prim(){ int p[N],vis[N],i,j,v,sum,m,last,k =0; p[k++] = 1; sum = 0; for(i=1;i<=n;i++) vis[i]=0; vis[1] = 1; for(m=1;m

 2.kruskal算法

这个代码还没有过,我还在找原因

先存着

#include
#include
#define N 110#define inf 0x7fffffffint cost[N][N];int ver[N];int n,a,b,l,tempi,tempj;using namespace std;int initia(){
//顶点及储存权值的邻接矩阵的初始化 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(i==j) cost[i][j]=0; else cost[i][j]=inf; ver[i]=0; } return 0;}int judge(int i,int j){ if(ver[i]==1&&ver[j]==1) return 0; else return 1;}int kruskal(){ int sumcost=0,mincost; for(int esum=0;esum
>n&&n!=0){ initia(); int t=n*(n-1)/2; while(t--){ cin>>a>>b>>l; cost[a][b]=cost[b][a]=l; } kruskal(); } return 0;}

 

转载于:https://www.cnblogs.com/carry-2017/p/7301251.html

你可能感兴趣的文章
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
Java跟Javac,package与import
查看>>