拓撲排序和關鍵路徑

2021-10-23 17:24:13 字數 679 閱讀 1863

#include#include#include#include#includeusing namespace std;

struct node;

const int maxv=1010;

vectorg[maxv]; //鄰接表

int n,m,indegree[maxv]; //頂點數、邊數、入度

//ve是事件最早到達時間,vl是事件最晚到達時間

int ve[maxv],vl[maxv];

stacktoporder; //拓撲序列

//拓撲排序,求解ve

bool topologicalsort()

} if(toporder.size()==n) return true;

else return false;

} //關鍵路徑,不是有向無環圖返回-1,否則返回關鍵路徑長度

int criticalpath()

//fill(vl,vl+n,ve[n-1]); //vl陣列初始化為終點的ve值

fill(vl,vl+n,maxlength);

//直接使用toporder出棧即為逆拓撲序列,求解vl陣列

while(!toporder.empty())

} return ve[n-1];

}

拓撲排序和關鍵路徑

拓撲排序 乙個無環的有向圖稱為無環圖 directed acyclic graph 簡稱dag圖。所有的工程或者某種流程都可以分為若干個小的工程或者階段,稱這些小的工程或階段為 活動 這些子程式之間存在一定的約束,其中某種子工程的開始必須在另一些子工程完成之後。因此dag圖表示乙個工程,其中有向邊表...

拓撲排序和關鍵路徑

文章出自 拓撲排序和關鍵路徑 拓撲排序 拓撲排序最大的用途就是判斷乙個有向圖是否有環,當然判斷還有一種方法就是floyd演算法。如果用鄰接表的話拓撲排序的時間複雜度是o n e 鄰接矩陣是o n 2 n表示頂點數,e表示邊數,floyd時間複雜度是o n 3 拓撲排序方法可分為無前趨的頂點優先的拓撲...

拓撲排序和關鍵路徑

拓撲排序 乙個無環的有向圖稱為無環圖 directed acyclic graph 簡稱dag圖。所有的工程或者某種流程都可以分為若干個小的工程或者階段,稱這些小的工程或階段為 活動 這些子程式之間存在一定的約束,其中某種子工程的開始必須在另一些子工程完成之後。因此dag圖表示乙個工程,其中有向邊表...