拓撲排序:
若有 a->b, 則要求a一定要在b之前列印出來。
思路:找到乙個入度為0的節點,列印出來,把與之相鄰的節點入度-1;
重複上面工作。
void topsort(graph *g)
} int *temp = new int[g->n]; //幫助判斷每個節點是否已經列印出來
for(i=0;in;i++)
temp[i]=0;
int sum=0; //統計共列印了多少的數字
while(sumn)
}} }
}
此方法時間複雜度為o(v2)
可以進行優化:
建立乙個佇列,統計所有入度為0 的節點,新增到佇列中。
從佇列中彈出,列印它。再將與他有關的節點的入度-1.若發現入度變為0,則新增到佇列中。
這樣時間複雜度為o(v+e)
void quicktopsort(graph *g)
} queuev;
for(i=0; in;i++)
while(!v.empty()) }
}
拓撲排序 入度
換個形象點的解釋,我們在學習一門課程之前,應該需要一定的預備知識,比如在學習b課程之前我們需先學習a 後用 x,y 表示x課程是y課程的預備知識,其實與上述有序偶的含義相同 則有 a,b 我們還有 c,b b,d e,d d,f d,g h,g 現在要求你合理安排a h這些課程的學習順序。這個任務的...
拓撲排序 九度1448
題目 註解 自己用陣列實現的,沒有用vector,有點笨吧!後附 王道正規解答 include using namespace std int incount 110 記錄入度 struct relation rt 110 int main for int i 0 i m i int num 0 f...
python 拓撲排序 Python 拓撲排序
python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...