說明:我開始未經過的緣由:輸出順序的問題。html
題目原文:任務開始的交接點編號小者優先,起點編號相同時,與輸入時任務的順序相反。
對活動,起始交接點相同的狀況下,在輸入任務時,後輸入的先輸出。個人求解方法是整了個結構體封裝起始交接點、終止交接點、輸出次序編號,並對結構體數組排序。具體參考文獻2。java
說明:
1 終點的肯定,出度爲0爲終點爲終點。
2 多終點,初始化時,每一個終點的最晚完成時間,應當爲項目最大完成時間。針對這一點,下面有一個對應的測試樣例。本測試樣例來自文獻3。數組
輸入樣例 7 6 1 2 4 1 3 3 2 4 5 3 4 3 5 7 5 6 7 2 輸出樣例 9 1->2 2->4
3 一個頂點,能夠入隊,或者說能夠被標記爲已經訪問的前提條件是:它的出度爲0。
具體來講,更新一個頂點的最晚完成時間時,出度減1,並判斷它是否能夠入隊。求解最晚完成時間部分僞代碼以下。本部分參考文獻2。測試
Vertex v = 出隊一個頂點; for(v的每一個未訪問的、且是v的前驅頂點的頂點) { 更新最晚完成時間; 當前頂點出度減1; if(當前頂點出度 == 0) { 入隊當前頂點; } }
一個比較好的測試樣子以下。本測試樣例來自文獻4。.net
輸入樣例 11 14 1 2 4 1 3 3 2 4 5 3 4 3 4 5 1 4 6 6 5 7 5 6 7 2 8 3 7 9 3 7 9 10 6 4 10 2 10 6 5 6 11 4 輸出樣例 21 3->4 4->10 6->11 8->3 9->3 10->6
[1] https://pintia.cn/problem-set... (7-11 關鍵活動)
[2] https://blog.csdn.net/rxq2008... (7-11 關鍵活動(一) - A Little Programmer's Base - CSDN博客)
[3] https://blog.csdn.net/qq_2643... (08-圖9 關鍵活動 (30分) - master-dragon的專欄 - CSDN博客)
[4] http://www.voidcn.com/article...code