zoukankan      html  css  js  c++  java
  • 17.广度优先遍历bfs

     1 #include <iostream>
     2 #include <boost/config.hpp>
     3 //图(矩阵实现)
     4 #include <boost/graph/adjacency_matrix.hpp>
     5 #include <boostgraphgraph_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 //prim算法求最小生成树
    12 #include <boost/graph/prim_minimum_spanning_tree.hpp>
    13 //深度优先遍历
    14 #include<boost/graph/depth_first_search.hpp>
    15 //广度优先遍历
    16 #include <boost/graph/breadth_first_search.hpp>
    17 using namespace std;
    18 using namespace boost;
    19 
    20 //顶点名称
    21 enum { A, B, C, D, E, F, G, H ,I};
    22 //顶点个数
    23 #define N 8
    24 const char *name = "ABCDEFGH";
    25 
    26 //宏定义
    27 typedef adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, int>> mygraph;
    28 typedef property<edge_weight_t, int> EWP;
    29 
    30 class BFSmyv :public boost::default_bfs_visitor
    31 {
    32 public:
    33     //当前在哪个结点
    34     template<typename vertex,typename Graph>
    35     void discover_vertex(vertex v, Graph g) const
    36     {
    37         cout << "at" << v << endl;
    38     }
    39 
    40     //输出当前结点下一个要访问的结点
    41     template<typename Edge,typename Graph> const
    42     void examine_edge(Edge e, Graph g)
    43     {
    44         cout << "edges" << e << endl;
    45     }
    46 };
    47 
    48 //无向图
    49 void main()
    50 {
    51     //图,每个结点是vec来实现,无向图,有边长与权重的属性
    52     mygraph myg;
    53     add_edge(A, B,13, myg);
    54     add_edge(B, C,23 ,myg);
    55     add_edge(A, C,1, myg);
    56     add_edge(A, D,11, myg);
    57     add_edge(C, D,10, myg);
    58     add_edge(D, E,11, myg);
    59     add_edge(E, F, 11, myg);
    60     add_edge(B, E, 11, myg);
    61     add_edge(B, F, 11, myg);
    62     add_edge(B, G, 11, myg);
    63     add_edge(B, H, 11, myg);
    64     add_edge(B, I, 11, myg);
    65 
    66     adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, int>>test;
    67     BFSmyv myd;
    68 
    69     //用于广度优先遍历
    70     //mygraph test;
    71     breadth_first_search(myg,vertex(8,test), visitor(myd));
    72     
    73     
    74     cin.get();
    75 }
  • 相关阅读:
    Tkinter之Label部件
    Tkinter编码风格
    GUI之tkinter视窗设计模块
    绘制函数图像
    backbone学习总结(一)
    实习两个月,写在辞职的今天
    Spark SQL 编程初级实践2- 编程实现利用 DataFrame 读写 MySQL 的数据
    Spark SQL 编程初级实践1-Spark SQL 基本操作
    spark创建DataFrame的几种方式
    python-with open() as file相关参数以及常用打开方式
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8668163.html
Copyright © 2011-2022 走看看