图论学习(三)求最小生成树
来源:互联网 发布:李小璐开的淘宝网店 编辑:程序博客网 时间:2024/06/05 07:08
1.方法一使用kruskal算法求最小生成树
思路
(1)新建一个存放边的容器std::vector < Edge > spanning_tree;
(2)调用 kruskal_minimum_spanning_tree将边放入容器中
#include <boost/graph/adjacency_list.hpp>#include <boost/graph/kruskal_min_spanning_tree.hpp>#include <iostream>int main(){ using namespace boost; typedef adjacency_list < vecS, vecS, undirectedS,no_property, property < edge_weight_t, int > > Graph; typedef graph_traits < Graph >::edge_descriptor Edge; typedef std::pair<int, int> E; const int num_nodes = 5; E edge_array[] = { E(0, 2), E(1, 3), E(1, 4), E(2, 1), E(2, 3), E(3, 4), E(4, 0), E(4, 1) }; int weights[] = { 1, 1, 2, 7, 3, 1, 1, 1 }; std::size_t num_edges = sizeof(edge_array) / sizeof(E); Graph g(edge_array, edge_array + num_edges, weights, num_nodes); property_map < Graph, edge_weight_t >::type weight = get(edge_weight, g); std::vector < Edge > spanning_tree; kruskal_minimum_spanning_tree(g, std::back_inserter(spanning_tree)); std::cout << "Print the edges in the MST:" << std::endl; for (std::vector < Edge >::iterator ei = spanning_tree.begin(); ei != spanning_tree.end(); ++ei) { std::cout << source(*ei, g) << " <--> " << target(*ei, g) << " with weight of " << weight[*ei] << std::endl; } return EXIT_SUCCESS;}
参考文献
http://www.boost.org/doc/libs/1_64_0/libs/graph/example/kruskal-example.cpp
0 0
- 图论学习(三)求最小生成树
- 【最小生成树】图论复习(三)
- 图之三(最小生成树)
- 求图的最小生成树
- 求图的最小生成树
- 普里姆(Prim)求最小生成树
- poj2075(prim()求最小生成树)
- Kruskal算法(求最小生成树)
- 最小生成树 (tarjan 求桥)
- Kruskal算法求最小生成树 (最小堆优化)
- Prime算法求最小生成树 (最小堆优化)
- kruscal求最小生成树
- 普利姆-求最小生成树
- prim 求最小生成树
- KrusKal求最小生成树
- poj 3522(求最小生成树,使得最边和最小边差最小)
- 最小生成树学习
- 最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
- 七段管上静态显示1976
- ueif的stall的实现
- 传统POS/终端/银联POS简介
- 通用输入输出口(GPIO)
- 图论学习(三)求最小生成树
- 解决某些手机RadioGroup中的RadioButton不居中问题
- 存个图片
- mysql属性中包含某个固定的字段
- oop特性——封装
- Linux命令之chmod
- WPF 标签上的属性 Visible
- 算法4.3 最小生成树
- 用JS获取地址栏参数的方法