zoukankan      html  css  js  c++  java
  • 图的BFS与DFS

    前言

    本部分代码的存图方式为 ( ext{vector}) 存图。

    它与标准邻接表差别并不是很大。只是 ( ext{vector}) 比较好写。

    例题

    题目链接

    题目给我们一个有向图,要求我们求出从一个入度为 (0) 的点开始,DFS 和 BFS 的遍历顺序。

    请对这个图分别进行 DFS 和 BFS,并输出遍历结果。如果有很多点可以遍历,请先遍历编号较小的那个点 (因此你可能需要先排序)。

    输入样例

    8 9
    1 2
    1 3
    1 4
    2 5
    2 6
    3 7
    4 7
    4 8
    7 8
    

    输出样例

    1 2 5 6 3 7 8 4 
    1 2 3 4 5 6 7 8 
    

    DFS

    直接感性理解,深搜即可。无任何难度。

    void dfs(ll s)
    {
        vis[s] = 1;
        ans.push_back(s);
        for (int i = 0; i < t[s].size(); ++i)
            if (!vis[t[s][i]])
                dfs(t[s][i]);
    }
    

    BFS

    关于如何广搜,这里我就不再讲解。具体可以查看大佬博客

    这里只放代码作为参考。

    void bfs(ll s)
    {
        queue<ll> q;
        q.push(s);
        vis[s] = 1;
        while (!q.empty())
        {
            ll x = q.front();
            ans.push_back(x);
            q.pop();
            for (ll i = 0; i < t[x].size(); ++i)
            {
                if (!vis[t[x][i]])
                {
                    q.push(t[x][i]);
                    vis[t[x][i]] = 1;
                }
            }
        }
    }
    
  • 相关阅读:
    转:神经网络入门
    转:Webkit Flex伸缩盒模型属性备忘
    css3 display:-webkit-box
    display:inline和display:block及html常用标签
    display
    weui flex 分布
    图片、字体、iconfont矢量图
    flex weui列表demo
    方法调用
    C#多线程之Task
  • 原文地址:https://www.cnblogs.com/EdisonBa/p/14964649.html
Copyright © 2011-2022 走看看