最小生成树kruskal算法的代码实现
来源:互联网 发布:yy软件下载 编辑:程序博客网 时间:2024/04/29 08:20
最小生成树kruskal算法的代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#define maxn 105
using namespace std;
Int father[maxn], son[maxn];
Struct eage
{
Int a;
Int b;
Int eg;
}e[maxn];
Bool cmp(const eage & a, const eage & b)
{
Return a.eg < b.eg;
}
Int research(int a)
{
Return a == father[a] ? a : research(father[a]);
}
bool join(int a, int b)
{
Int root1, root2;
Root1 = research(a);
Root2 = research(a);
If(root1 == root2)
Return false;
Else if(son[root1] >= son[root2])
{
Father[root2] = root1;
Son[root1] += son[root2];
}
Else
{
Father[root1] = root2;
Son[root2] += son[root1];
}
Return true;
}
Int main()
{
Int i, n, en, nn = 0, ans = 0, flag = 0;
Scanf(“%d%d”,&n, &en);
For(i = 0;i < en;i++)
{
Scanf(“%d%d%d”,&e[i].a, &e[i].b, &e[i].eg);
}
Sort(e, e + en - 1, cmp);
For(i = 0;i < n;i++)
{
Father[i] = i;
Son[i] = 1;
}
For(i = 0;i < en;i++)
{
If(join(e[i].a, e[i].b))
{
Nn++;
Ans += e[i].eg;
}
If(nn == (n - 1)
{
Flag = 1;
Break;
}
}
If(flag == 1)
Printf(“%d\n”, ans);
Else
Printf(“impossible!\n”);
}
- 最小生成树kruskal算法的代码实现
- 最小生成树的Kruskal算法java代码实现
- Kruskal算法求最小生成树的c++代码实现
- 最小生成树Kruskal算法的实现
- 最小生成树-Kruskal算法 java代码实现
- Kruskal最小生成树算法代码实现(c++)
- 最小生成树的Prim算法和Kruskal算法java代码实现
- 最小生成树的Prim算法和Kruskal算法java代码实现
- 寻找最小生成树的kruskal算法的java实现
- Java实现最小生成树Kruskal算法
- Kruskal算法实现最小生成树
- Matlab实现Kruskal最小生成树算法
- kruskal算法实现最小生成树
- 最小生成树 kruskal算法 C++实现
- Kruskal算法实现最小生成树
- 最小生成树之Kruskal算法的实现
- 用于最小生成树的Kruskal算法实现
- 图的最小生成树:Kruskal算法实现
- spring.spring mvc--SpringMVC拦截器简单使用
- 使用tinyxml封装或解析xml形式字符串
- libevent源码深度剖析三
- MapReduce工作原理详解
- PE 25 1000-digit Fibonacci number
- 最小生成树kruskal算法的代码实现
- java实现简单的二叉树
- thinkPHP笔记-----前台跳转到后台执行函数
- HTML5+CSS3立方体3D翻转效果
- Codeforces Round #296 (Div. 2) (ABCDE题解)
- 黑马程序员_日记4_Java继承,抽象类和接口
- libevent源码深度剖析二
- CSS3鼠标滑动动画按钮特效
- libevent源码深度剖析一