• 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 }
  • 相关阅读:
    HDUOJ-----Difference Between Primes
    HDUOJ----(4706)Children's Day
    poj-------Common Subsequence(poj 1458)
    poj----Maximum sum(poj 2479)
    scanf/sscanf %[]格式控制串的用法(转)
    HDUOJ--------Text Reverse
    HDUOJ---hello Kiki
    HDUOJ-----X问题
    POJ-----C Looooops
    POJ--Strange Way to Express Integers
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8668163.html
Copyright © 2020-2023  润新知