最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)廣度優(yōu)先遍歷圖

 更新時間:2021年09月16日 15:58:56   作者:Kayla小可愛  
這篇文章主要為大家詳細介紹了C++實現(xiàn)廣度優(yōu)先遍歷圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)廣度優(yōu)先遍歷圖的具體代碼,供大家參考,具體內(nèi)容如下

廣度優(yōu)先遍歷

void bfs(int start, int parent[], int dist[], int seen[], int visited[]) {
    std::queue <int> q;//建立數(shù)據(jù)隊列q
    int v;
    
    q.push(start);    //讓開始序列入棧
    parent[start] = start;      // 開始節(jié)點的父節(jié)點是開始節(jié)點
    dist[start] = 0;            // 初始化距離向量為-1
    seen[start] = 1;       

    while(!q.empty()) {         //如果隊列非空
        v = q.front(); q.pop();   //令V是隊列的最前端,并將其出棧
        if(visited[v])          // 如果visited[v]=1, continue.
            continue;
        visited[v] = 1;         //否則令visited[v]=1
        std::cout << v << '\n';//輸出顯示當(dāng)前節(jié)點

        // 遍歷v的所有相鄰節(jié)點
        for(int i = 0; i < graph[v].size(); i++) {
            // 如果v的第i個相鄰節(jié)點的i并沒有訪問過
            if(!visited[graph[v][i]]) {

                // 如果這個沒有訪問過的節(jié)點沒有被看過
                if(!seen[graph[v][i]]) {
                //壓入棧,距離+1,設(shè)置父節(jié)點
                    q.push(graph[v][i]);
                    dist[graph[v][i]] = 1 + dist[v];
                    parent[graph[v][i]] = v;
                    // 如果已經(jīng)訪問過,令seen=1.
                    seen[graph[v][i]] = 1;
                }
            }
            else {

                // 如果節(jié)點已經(jīng)被訪問了,選擇距離最小的
                if(dist[v] + 1 < dist[graph[v][i]]) {
                    dist[graph[v][i]] = 1 + dist[graph[v][i]];
                    parent[graph[v][i]] = v;
                }
            }
        }
    }
}

主函數(shù)

int main() {

    int n = 8;          // 圖中的節(jié)點數(shù)
    graph = std::vector <std::vector <int> > (n);
    
    // 圖的鄰接表
    graph[0] = {1, 2};
    graph[1] = {0, 2, 3};
    graph[2] = {0, 1, 5, 6};
    graph[3] = {1, 2, 4};
    graph[4] = {3};
    graph[5] = {2};
    graph[6] = {2, 7};
    graph[7] = {6};

    /* - parent[i] = parent of 'i' in BFS traversal.
       - dist[i] = 從開始到I節(jié)點的最短距離shortest distance of 'i' from 'start'.
       - If seen[i] == 1, 節(jié)點i已經(jīng)進入過隊列'i' has entered the queue once
       - If visited[i] == 1, 節(jié)點i已經(jīng)進入隊列,并且所有相鄰節(jié)點都已經(jīng)進入過隊列
    */
    int parent[n+1], dist[n+1], seen[n+1], visited[n+1];
    memset(parent, -1, sizeof(parent));//父節(jié)點初始化為-1
    memset(dist, -1, sizeof(dist));//距離向量初始化為-1
    memset(seen, 0, sizeof(seen));
    memset(visited, 0, sizeof(visited));//seen用于判斷該節(jié)點是否訪問過

    int start = 0;      // 開始節(jié)點
    bfs(start, parent, dist, seen, visited);

    return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法

    C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法

    本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C++學(xué)習(xí)小結(jié)之?dāng)?shù)據(jù)類型及轉(zhuǎn)換方式

    C++學(xué)習(xí)小結(jié)之?dāng)?shù)據(jù)類型及轉(zhuǎn)換方式

    本文給大家分享的是本人在學(xué)習(xí)C++過程中的一個小心得,關(guān)于數(shù)據(jù)類型和轉(zhuǎn)換方式的,這里記錄下來,推薦給菜鳥們,高手大神請直接飄過。
    2015-07-07
  • C++實現(xiàn)簡單遺傳算法

    C++實現(xiàn)簡單遺傳算法

    這篇文章主要介紹了C++實現(xiàn)簡單遺傳算法,以實例形式較為詳細的分析了遺傳算法的C++實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • C語言二維數(shù)組運用實現(xiàn)掃雷游戲

    C語言二維數(shù)組運用實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言二維數(shù)組運用實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 基于C++實現(xiàn)五子棋小游戲

    基于C++實現(xiàn)五子棋小游戲

    這篇文章主要為大家詳細介紹了基于C++實現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言實現(xiàn)歌手大獎賽計分程序

    C語言實現(xiàn)歌手大獎賽計分程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)歌手大獎賽計分程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C語言實現(xiàn)商品管理系統(tǒng)開發(fā)

    C語言實現(xiàn)商品管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)商品管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C/C++字符串函數(shù)之復(fù)制函數(shù)詳解

    C/C++字符串函數(shù)之復(fù)制函數(shù)詳解

    下面小編就為大家?guī)硪黄狢/C++字符串函數(shù)之復(fù)制函數(shù)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • C語言實現(xiàn)掃雷游戲及其優(yōu)化

    C語言實現(xiàn)掃雷游戲及其優(yōu)化

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷游戲及其優(yōu)化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C++如何用數(shù)組模擬鏈表

    C++如何用數(shù)組模擬鏈表

    大家好,本篇文章主要講的是C++如何用數(shù)組模擬鏈表,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論

定边县| 黑水县| 连云港市| 宽城| 武冈市| 台中市| 河北省| 乌拉特前旗| 荥经县| 清涧县| 墨玉县| 乐山市| 贵阳市| 衡阳县| 繁昌县| 曲阜市| 铅山县| 林州市| 牡丹江市| 肇州县| 遵化市| 富平县| 黔江区| 昭觉县| 桃源县| 衡水市| 灵川县| 克东县| 吉林市| 平果县| 天祝| 兰考县| 微博| 济阳县| 南木林县| 汝南县| 合作市| 宁化县| 新疆| 卢氏县| 眉山市|