易截截图软件、单文件、免安装、纯绿色、仅160KB

最小生成树的Kruskal算法(C/C++) 附有测试数据和结果

/*
*算法原理:将图G 中的边按权数从小到大逐条考察,
* 按不构成圈的原则加入到T中(若有选择时, 不同的选
* 择可能会导致最后生成树的权数不同), 直到
* q(T) = p(G)-1为止, 即 T 的边数 = G 的顶点1 为止.
*算法中无圈性的判定比较麻烦,应该用标记法最好,
*对各个分支的顶点标号。
*我没仔细看书,其实书上写得很清楚,是老师提醒的 ^_^ 。
*参考书:2004,《图论及其应用》,科学出版社,孙惠泉 编著。
*/
#include<iostream>
#include<fstream>
#define N 100
using namespace std;
int n;//结点数
int a[N][N] = {0};
bool judgeNode(int flagNodes[N]){//判断是否还有未访问结点
for(int i = 0; i < n; i++)
if(flagNodes[i] == 0) return 1;
return 0;
}
void judgeSub(int flagSub[N], int x, int y){//标记分支
if(flagSub[x] != 0){
if(flagSub[y] == 0) flagSub[y] = flagSub[x];
else{
int min = flagSub[x] < flagSub[y] ? flagSub[x] : flagSub[y];
int max = flagSub[x] + flagSub[y] - min;
for(int i = 0; i < n; i++)
if(flagSub[i] == max)
flagSub[i] = min;
}
}
else{
if(flagSub[y] == 0){
int max = 0;
for(int i = 0; i < n; i++){
if(flagSub[i] != 0 && flagSub[i] > max)
max = flagSub[i];
}
flagSub[x] = flagSub[y] = ++max;
}
else flagSub[x] = flagSub[y];
}
}
bool judgeCircle(int flagSub[N], int x, int y){//判断生成树中无圈
if(flagSub[x] == 0 && flagSub[y] == 0) return 1;
if(flagSub[x] != flagSub[y]) return 1;
return 0;
}
void kruskal(){
int temp[N][N] = {0};
int flagNodes[N] = {0};
int flagSub[N] = {0};
int least = N;
int x = 0, y = 0;
cout<<"The edges of Optimal tree:"<<endl;
while(judgeNode(flagNodes)){
least = N;
for(int i = 0; i < n; i++){
for(int j = i+1; j < n; j++){


相关文档:

C和指针

C和指针
在C中有一个很重要的概念,或许大家都知道,那就是指针。在很多初学者刚接触C的时候都认为这是最难的知识点了。没错,我刚开始学的时候也是这么想的,上了第一节课后,第一感受就是:天啊,这简直就是天书!由于个人对于C的爱好,经过一段时间的学习和研究之后,发现这一块是我最喜欢的,并且逐步发现这也是本人的 ......

读《c程序设计语言》一些感受

     最近在看《c程序设计语言》,就是那本被誉为C语言圣经的书籍。几天看了一章,感触很大,开篇就涉及到很多实用程序,不像谭浩强那样让人深陷语法细节之中,而且学完谭的书感觉什么都不能做。很多问题谭都回避了。所谓专业看看c程序设计语言的代码的风格就能感受到,一种精心雕琢的艺术品。第一章有 ......

【转】C与C++的区别

在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少量区别.下面简要介绍一下最重要的区别.
    在C++中,民,局部变量可以在一个程序块内在任何地方声明,在C中,局部变量必须在程序块的开始部分,即在所有"操作"语句之前声明,请注意,C99标准中取消了这种限制.
  &nb ......

ubuntu c/c++ IDE(开发环境)

前言 不断有网友将编译器 GCC 误认为 IDE(集成开发环境)       
期望脱离命令行
期望能在菜单中发现其身影
期望其能有一个集编辑编译链接调试运行于一体的界面
故本文给大家简单罗列一些 C/C++ 编程中可用的 IDE,或许你从中可以找一个你喜欢的。
为避免以下某个软件安装时不自动安装 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号