当前位置: 首页 > news >正文

14.boost最小生成树 kruskal_min_spainning_tree

 1 #include <iostream>
 2 #include <boost/config.hpp>
 3 //图(矩阵实现)
 4 #include <boost/graph/adjacency_matrix.hpp>
 5 #include <boost\graph\graph_utility.hpp>
 6 #include <boost/graph/graph_traits.hpp>
 7 //图(链表实现)
 8 #include <boost/graph/adjacency_list.hpp>
 9 //求最小生成树
10 #include <boost/graph/kruskal_min_spanning_tree.hpp>
11 using namespace std;
12 using namespace boost;
13 
14 //顶点名称
15 enum { A, B, C, D, E, F };
16 //顶点个数
17 #define N 6
18 const char *name = "ABCDEF";
19 
20 //无向图
21 void main()
22 {
23     //图,每个结点是vec来实现,无向图,有边长与权重的属性
24     adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, int>> myg;
25     add_edge(A, B,13, myg);
26     add_edge(B, C,23 ,myg);
27     add_edge(A, C,1, myg);
28     add_edge(A, D,11, myg);
29     add_edge(C, D,10, myg);
30     add_edge(B, D,11, myg);
31 
32     //链表
33     typedef adjacency_list<vecS, vecS, undirectedS, property<edge_weight_t, int>> mygraph;
34     //创建边的链表
35     list<mygraph::edge_descriptor> mylist;
36     //生成的结果尾插到mylist
37     kruskal_minimum_spanning_tree(myg, back_inserter(mylist));
38 
39     //创建边与权重的映射(weight是函数指针)
40     auto weight= get(edge_weight,myg);
41     //property_map<mygraph, edge_weight_t>::type weight = get(edge_weight, myg);
42 
43     for (auto ib = mylist.begin(); ib != mylist.end(); ib++)
44     {
45         //输出边
46         //cout << *ib << endl;
47         cout << source(*ib, myg) << "->" << target(*ib, myg) << "权重" << weight(*ib) << endl;
48     }
49     cin.get();
50 }

 

转载于:https://www.cnblogs.com/xiaochi/p/8662881.html

相关文章:

  • CAP原则(CAP定理)、BASE理论
  • Google I/O 2014 大会总结 Android开发新方向
  • 模板中可以直接使用函数设定数据集,而不需要在控制器中给模板变量赋值传入数据集变量,如:...
  • 预防定时重启apache服务没有起来的脚本
  • iframe的用法
  • Unix系统编程()brk,sbrk
  • linux audit审计(2)--audit启动
  • 完美洗牌算法
  • STL::sort函数实现
  • Android中Activity和Service的数据通讯
  • X-Forwarded-For 和 X-Real-IP 的区别?
  • python的列表生成式
  • Angular2.0的学习(三)
  • 程序员如何利用空闲时间挣零花钱
  • MariaDB/MySQL存储过程和函数
  • 【mysql】环境安装、服务启动、密码设置
  • ➹使用webpack配置多页面应用(MPA)
  • Consul Config 使用Git做版本控制的实现
  • laravel with 查询列表限制条数
  • session共享问题解决方案
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Swoft 源码剖析 - 代码自动更新机制
  • windows下mongoDB的环境配置
  • 程序员最讨厌的9句话,你可有补充?
  • 对象管理器(defineProperty)学习笔记
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 扑朔迷离的属性和特性【彻底弄清】
  • 强力优化Rancher k8s中国区的使用体验
  • 微信小程序实战练习(仿五洲到家微信版)
  • Semaphore
  • !!Dom4j 学习笔记
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (ZT)薛涌:谈贫说富
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .NET Core跨平台微服务学习资源
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • /bin/bash^M: bad interpreter: No such file or directory
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ C++ ] 继承
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [bzoj4240] 有趣的家庭菜园
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [DM复习]关联规则挖掘(下)
  • [HDU] 1054 Strategic Game 入门树形DP
  • [IE编程] 了解Urlmon.dll和Wininet.dll
  • [JavaEE系列] Thread类的基本用法
  • [Oh My C++ Diary]带参数的main()函数