zoukankan      html  css  js  c++  java
  • DFS和BFS

     #返回上一级

    @Author: 张海拔

    @Update: 2014-01-11

    @Link: http://www.cnblogs.com/zhanghaiba/p/3514489.html

    /*
     *Author: ZhangHaiba
     *Date: 2014-1-10
     *
     *classcical DFS & BFS
     */
    
    #include <iostream>
    #include <cstring>
    #include <queue>
    
    using namespace std;
    const int N = 512;
    int mat[N][N];
    int vis[N];
    
    void set_mat(int n)
    {
        int i, j;
        for (i = 0; i < n; ++i)
            for (j = 0; j < n; ++j)
                cin >> mat[i][j];
    }
    
    //for connected graph
    void DFS(int n, int i)
    {
        vis[i] = 1;
        cout << i << " ";
    
        for (int j = 0; j < n; ++j)
            if (!vis[j] && mat[i][j] > 0)
                DFS(n, j);
    }
    
    queue<int> q;
    
    //for connected graph
    void BFS(int n, int i)
    {
        vis[i] = 1;
        q.push(i);
    
        while (!q.empty()) {
            for (int j = 0; j < n; ++j)
                if (!vis[j] && mat[q.front()][j] > 0) {
                    vis[j] = 1;
                    q.push(j);
                }
            cout << q.front() << " ";
            q.pop();
        }
    }
    
    int main()
    {
        int n;
    
        cin >> n;
        set_mat(n);
        memset(vis, 0, sizeof vis);
        BFS(n, 0);
        memset(vis, 0, sizeof vis);
        DFS(n, 0);
        return 0;    
    }

    测试用例

    输入:
    7
    0 7 0 5 0 0 0
    7 0 8 9 7 0 0
    0 8 0 0 5 0 0
    5 9 0 0 15 6 0
    0 7 5 15 0 8 9
    0 0 0 6 8 0 11
    0 0 0 0 9 11 0

    输出:
    0 1 2 4 3 5 6
    0 1 3 2 4 5 6 

    DFS:

    如果有多个点可以去,选择去第一个点,此时又回到原问题。如果没有点可以去,则回到上一站点,选择去第二个点,一直回到起点为止。

    可以看出,DFS有前进的过程,也有回溯的过程,每个点都会前后访问两次。

    BFS:

    类似树的层次遍历。link(public)

     #返回上一级 

  • 相关阅读:
    tensorflow_知识点
    Win10 1803 谷歌内核浏览器出现假死现象的解决方法汇总
    今日笑话
    留存率例子(待优化)
    安装ODOO13
    freepascal获取进程列表
    vba给图片添加logo
    wps中开始支持javascript了
    获取本地ip
    判断素数
  • 原文地址:https://www.cnblogs.com/zhanghaiba/p/3514489.html
Copyright © 2011-2022 走看看