亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graph_trav.h

?? 數據結構與算法設計學習得素材
?? H
字號:
//---------------------------------------------------------------------------
#ifndef GRAPH_TRAV_H_
#define GRAPH_TRAV_H_
//---------------------------------------------------------------------------
#include <queue>
#include <deque>
#include <stack>
#include <vector>
#include <list>
#include <algorithm>
#include "Graph_Bas.h" 

template <class T>
class graph_traver: public graph_bas<T>
{
    public:
       // 不帶權值圖構造器
       graph_traver(graphInfo<T> ginfo): graph_bas<T>(ginfo){ }
       // 先深遍歷搜索
       list<T>& dfs(const T& beginVertex);
       // 先廣遍歷搜索
       list<T>& bfs(const T& beginVertex);
       // 計算無向圖連通分量
       void component();
       // 計算有向圖強連通分量
       void strong_component();
       // 判斷圖連通性
       bool isconnected();
       bool findVertex(list<T>& L,const T &vertex) {
       	  if(find(L.begin(),L.end(),vertex) != L.end())
	         return true;
	      else
	         return false;
       }
//    private:
    protected:
       bool pathconnect(T u,T w) {
          list<T> L = dfs(u);
          if(find(L.begin(),L.end(),w) != L.end())
             return 1;
          else
             return 0;
       }
};

template <class T>
list<T>& graph_traver<T>::dfs(const T& beginVertex)
{
   stack<T> S;
   list<T> *L,adjL;                   // L必須是一個指針,以便返回到引用
   list<T>::iterator itr;
   L = new list<T>;                   // 分配內存
   S.push(beginVertex);               // 頂點入棧
   while(!S.empty()) {
      T vertex = S.top();             // 取棧頂元素
      S.pop();                        // 頂點出棧
      if(! findVertex(*L, vertex)) {
         (*L).push_back(vertex);
         adjL = AdjLists[GetVertexPos(vertex)];
         for(itr=adjL.begin(); itr!=adjL.end(); ++itr)
            if(! findVertex(*L, *itr))
               S.push(*itr);
      }
   }
   return *L;                         // 返回到一個引用
}

template <class T>
list<T>& graph_traver<T>::bfs(const T& beginVertex)
{
   queue<T> Q;                        // 聲明一個隊列
   list<T> *L,adjL;
   list<T>::reverse_iterator itrev;
   T vertex;
   L = new list<T>;
   Q.push(beginVertex);               // 起始頂點入隊
   while(!Q.empty()) {
      vertex = Q.front();
      Q.pop();                        // 出隊
      if(!findVertex(*L,vertex)) {
         (*L).push_back(vertex);
	     adjL = AdjLists[GetVertexPos(vertex)];
         for(itrev=adjL.rbegin(); itrev!=adjL.rend(); itrev++)
	        if(!findVertex(*L,*itrev))
	           Q.push(*itrev);        // 新的鄰接頂點入隊
      }
   }
   return *L;
}

template <class T>
void graph_traver<T>::component()
{
   int count=0;
   vector<int> visited(GetnumVertices());
   list<T> L,vList=GetvertexList();
   list<T>::const_iterator it,itr;
   for(it=vList.begin(); it!=vList.end(); it++) {
      if (!visited[GetVertexPos(*it)]) {
         count++;
         L = bfs(*it);
         print_List("無向圖連通分量:", L);
         for (itr=L.begin(); itr!=L.end(); itr++)
           visited[GetVertexPos(*itr)]=1;
      }
   }
   cout << "連通分量個數=" << count << endl;
}

template <class T>
void graph_traver<T>::strong_component()
{
   int count=0;
   list<T> L,vList=GetvertexList(),markedList,scList;
   list<T>::const_iterator it,itr;
   for(it=vList.begin(); it!=vList.end(); it++) {
      if(find(markedList.begin(),markedList.end(),*it) == markedList.end()) {
         count++;
         scList.clear();
         L = bfs(*it);
         itr=L.begin();
         while(itr!=L.end()) {
           if(pathconnect(*itr,*it)) {
              scList.push_back(*itr);
              markedList.push_back(*itr);
           }
           itr++;
         }
         print_List("有向圖強連通分量: ", scList);
      }
   }
   cout << "強連通分量個數=" << count << endl;
}

// 判斷圖連通性
template <class T>
bool graph_traver<T>::isconnected()
{
   list<T> vList=GetvertexList(), L;
   list<T>::const_iterator it;
   for(it=vList.begin(); it!=vList.end(); it++) {
     L = bfs(*it);
     if(L.size()<vList.size())
        return false;
   }
   return true;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲电影第三页| 色欧美片视频在线观看在线视频| 韩国精品久久久| www.欧美色图| 日韩免费观看高清完整版| 亚洲少妇中出一区| 国产美女在线精品| 欧美一区二区观看视频| 亚洲精品第一国产综合野| 国产丶欧美丶日本不卡视频| 欧美一区二视频| 有坂深雪av一区二区精品| 国产成人免费视频精品含羞草妖精 | 午夜精品福利一区二区三区av| 福利一区二区在线| 26uuu久久天堂性欧美| 免费看欧美女人艹b| 欧美日韩视频在线第一区| 亚洲天堂2014| 99re6这里只有精品视频在线观看| 精品欧美一区二区在线观看| 三级不卡在线观看| 欧美人成免费网站| 亚洲国产精品一区二区久久恐怖片| 99精品1区2区| 亚洲日本丝袜连裤袜办公室| proumb性欧美在线观看| 国产精品人人做人人爽人人添| 国产成人高清在线| 国产清纯在线一区二区www| 国产一二精品视频| 亚洲国产高清在线| 99久久99久久综合| 亚洲精品乱码久久久久| 一本大道久久精品懂色aⅴ| 亚洲特黄一级片| 在线观看日产精品| 婷婷综合另类小说色区| 91精品国产91久久久久久最新毛片 | 成人av影院在线| 精品一区二区三区久久久| 精品少妇一区二区三区| 韩国av一区二区三区| 国产午夜久久久久| 色综合视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 国产成人精品一区二区三区网站观看| 精品久久久久久亚洲综合网| 国产尤物一区二区在线| 国产精品你懂的在线欣赏| 国产一区二区三区| 国产精品毛片高清在线完整版| 国产成人综合视频| 亚洲色图制服诱惑| 欧美人牲a欧美精品| 韩日av一区二区| 国产精品免费免费| 欧美日韩国产一级| 国产精品一区二区三区99| 1024国产精品| 制服丝袜成人动漫| 国产成人高清在线| 亚洲国产成人tv| 久久久久久**毛片大全| 一本大道久久a久久综合婷婷| 免费看日韩精品| 亚洲欧洲日韩一区二区三区| 欧美军同video69gay| 国产成人在线看| 五月激情综合色| 欧美极品xxx| 欧美日韩第一区日日骚| 成人激情小说网站| 精品中文av资源站在线观看| 中文字幕亚洲电影| 日韩欧美一二区| 色偷偷一区二区三区| 国产一区二区三区综合| 五月激情丁香一区二区三区| 中文字幕一区在线观看视频| 欧美电影一区二区三区| 一本到高清视频免费精品| 国产一区二区三区日韩 | 国产精品女主播av| 欧美成人精精品一区二区频| 欧美中文字幕不卡| 岛国精品在线观看| 青娱乐精品视频| 亚洲成a人片综合在线| 国产精品久久三| 2024国产精品视频| 91精品国产欧美一区二区18| 91福利视频在线| 97精品久久久午夜一区二区三区 | 亚洲美女精品一区| 国产欧美精品一区aⅴ影院| 日韩午夜电影在线观看| 欧美日产在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 99re热这里只有精品视频| 激情综合网最新| 麻豆国产精品官网| 日本不卡视频在线| 丝袜诱惑亚洲看片| 日产国产欧美视频一区精品| 性欧美疯狂xxxxbbbb| 亚洲免费电影在线| 亚洲欧美另类图片小说| 国产一二三精品| 国产麻豆精品在线| 国产在线乱码一区二区三区| 久久精品国产**网站演员| 三级不卡在线观看| 老色鬼精品视频在线观看播放| 首页亚洲欧美制服丝腿| 日日夜夜免费精品| 热久久国产精品| 寂寞少妇一区二区三区| 韩国在线一区二区| 成人一级片网址| 成人av免费在线播放| 91网页版在线| 欧美视频在线观看一区二区| 欧美日韩国产大片| 欧美mv和日韩mv的网站| 国产亚洲一区二区三区四区 | 99国产欧美另类久久久精品| 91年精品国产| 欧美日韩国产中文| 欧美mv日韩mv国产网站| 国产精品美女久久久久av爽李琼| 国产精品无圣光一区二区| 亚洲欧美日韩久久| 午夜精品视频一区| 狠狠色伊人亚洲综合成人| 成人永久aaa| 色8久久精品久久久久久蜜| 欧美日韩在线一区二区| 日韩欧美美女一区二区三区| 久久精子c满五个校花| 亚洲视频在线一区| 日本三级韩国三级欧美三级| 国产一区二区三区免费| www.爱久久.com| 3d动漫精品啪啪一区二区竹菊| 久久日韩粉嫩一区二区三区| 亚洲人123区| 日本麻豆一区二区三区视频| 久久9热精品视频| 97久久超碰国产精品| 91精品国产高清一区二区三区 | 欧美日韩三级一区二区| 精品裸体舞一区二区三区| 亚洲免费高清视频在线| 精品影院一区二区久久久| 成人av动漫网站| 欧美r级电影在线观看| 自拍偷拍亚洲激情| 精品一区二区三区久久久| 日本道在线观看一区二区| 精品欧美乱码久久久久久 | 捆绑调教一区二区三区| 91色九色蝌蚪| 精品处破学生在线二十三| 亚洲图片欧美视频| 国产91精品一区二区麻豆网站 | 91麻豆免费观看| 久久久久久久久久久电影| 日韩电影在线免费| 91精品1区2区| 国产精品久久久一区麻豆最新章节| 日韩高清不卡在线| 欧美伊人久久久久久午夜久久久久| 国产偷国产偷亚洲高清人白洁| 日本不卡视频一二三区| 日本道精品一区二区三区| 欧美高清在线视频| 国产福利不卡视频| 久久综合一区二区| 日韩极品在线观看| 欧美性大战久久久久久久| 亚洲日本va在线观看| 成人综合婷婷国产精品久久 | av亚洲精华国产精华| 欧美www视频| 精品亚洲免费视频| 日韩亚洲欧美一区| 日本免费在线视频不卡一不卡二| 在线精品亚洲一区二区不卡| 亚洲视频一二区| 99精品国产一区二区三区不卡| 国产精品无人区| 国产成人精品在线看| 日本一区二区免费在线| 国产米奇在线777精品观看| 久久久精品蜜桃| 丁香婷婷深情五月亚洲| 国产精品乱子久久久久| 不卡的av电影| 亚洲摸摸操操av|