最小生成树Kruskal算法
来源:互联网 发布:2017黑马python百度云 编辑:程序博客网 时间:2024/06/06 03:05
此为《大话数据结构》提供,对排序算法进行补充。
//============================================================================// Name : MST.cpp// Author : Julie// Version : 0.0.1// Copyright : Julie@2015.02.10// Description : To Generate the MST with Kruskal algorithm//============================================================================#include <iostream>#include <vector>#include <algorithm>using namespace std;#define N 7#define M 7#define inf 10000#define MAXEDGE 15#define MAXVEX 7struct Edge{int begin;int end;int weight;};typedef struct node{int matrix[N][M]; //邻接矩阵int n; //顶点数int e; //边数}MGraph1;int Find(int *parent, int f){while (f < MAXVEX && parent[f] > 0){f = parent[f];}return f;}bool cmp(Edge e1, Edge e2){return e1.weight < e2.weight;}void MiniSpanTree_Kruskal(MGraph1 Mtest){//Edge edges[MAXEDGE]; //定义边集数组int parent[MAXVEX + 1]; //定义一数组用来判断边与边是否形成回路//将邻接矩阵G转化为边集数组并按权由小到大排序vector<Edge> edges1;for (int i = 0; i < Mtest.n - 1; i++){ for (int j = 0; j < Mtest.n; j++){if (Mtest.matrix[i][j] > 0){Edge tmp_edge;tmp_edge.begin = min(i, j);tmp_edge.end = max(i, j);tmp_edge.weight = Mtest.matrix[i][j];edges1.push_back(tmp_edge);}}}sort(edges1.begin(), edges1.end(), cmp);for (int i = 0; i < Mtest.n; i++){parent[i] = 0;}for (int i = 0; i < Mtest.e; i++){int n_edge = Find(parent, edges1.at(i).begin);int m_edge = Find(parent, edges1.at(i).end);if (n_edge != m_edge){parent[n_edge] = m_edge;cout << edges1.at(i).begin << " " << edges1.at(i).end << ":"<< edges1.at(i).weight << endl;}}}int main(){MGraph1 MGraph;MGraph.n = 7;MGraph.e = 12;int n1, n2;for (int i = 0; i < MGraph.n; i++){for (int j = 0; j < MGraph.n; j++)MGraph.matrix[i][j] = -inf;}for (int i = 0; i < MGraph.e; i++){cin >> n1 >> n2;cin >> MGraph.matrix[n1][n2];//MGraph.matrix[n2][n1] = MGraph.matrix[n1][n2];}MiniSpanTree_Kruskal(MGraph);return 0;}
0 0
- Kruskal 最小生成树算法
- 最小生成树Kruskal算法
- 最小生成树----Kruskal算法
- 最小生成树kruskal算法
- 最小生成树 - Kruskal算法
- 最小生成树---Kruskal算法
- 最小生成树(kruskal算法)
- 最小生成树,kruskal算法
- 最小生成树--kruskal算法
- 最小生成树---kruskal算法
- 最小生成树--Kruskal算法
- 最小生成树 : Kruskal 算法
- 最小生成树-Kruskal算法
- 最小生成树 Kruskal算法
- 最小生成树kruskal算法
- 最小生成树kruskal算法
- 【Kruskal】算法 最小生成树
- 最小生成树kruskal算法
- 在Salesforce Apex中动态获取SObject信息
- tomcat启动一闪而过问题
- 使用log4cplus写日志
- windows环境下搭建ffmpeg开发环境
- 运维运营一个网站的经验总结
- 最小生成树Kruskal算法
- Apache Rewrite规则详解
- 冬登高峰山,问禅铁瓦寺
- acm2002
- iOS开发之我对MVC的理解
- ndk c调用java函数
- archlinux - 如何解决密钥问题以及字体配置问题(infinality)
- 数列特征
- 安装配置Apache支持https和fcgi