LintCode 拓撲排序 DFS實現

2021-08-07 05:37:42 字數 580 閱讀 5110

給定乙個有向圖,圖節點的拓撲排序被定義為:

找到給定圖的任一拓撲排序

注意事項

你可以假設圖中至少存在一種拓撲排序

說明learn more about representation of graphs

樣例對於下列圖:

這個圖的拓撲排序可能是:

[0, 1, 2, 3, 4, 5]

或者[0, 2, 3, 1, 5, 4]

或者....

下面用遞迴思想和深度優先搜尋實現拓撲排序的演算法。

#include using namespace std;

/** * definition for directed graph.

* struct directedgraphnode ;

* };

*/const int max=99999;

class solution

result.push_back(r); //將訪問結束的頂點新增到vecotr

}vectortopsort(vectorgraph)

};

拓撲排序 dfs

運用dfs,對乙個有向無回圖 dag 進行拓撲排序。乙個圖的拓撲排序可看成所有頂點沿水平線排列而成的乙個序列,使得所有有向邊均從左指向右。topological sort g call dfs g to compute finishing times f v for each vertex v as...

拓撲排序 dfs

include include includeusing namespace std const int maxn 50 typedef struct nodenode typedef struct graphgraph vectorss 存放拓撲序列 bool vis maxn int find ...

拓撲排序DFS做法

1 給定乙個有向圖,在拓撲排序中可以 有很多個正確解 由若干小段的 list 組成。2 正確的單序列順序 具體到乙個list之間的元素 3 正確的全序列順序 list彼此之間的順序,可以有多個 e.g.以下圖為例,不論先從哪個點開始 dfs,例如 dfs belt 會得到乙個 belt jacket...