1 測試點:單起點和單終點,2條關鍵路徑
說明:我開始未通過的原因:輸出順序的問題。
題目原文:任務開始的交接點編號小者優先,起點編號相同時,與輸入時任務的順序相反。
對活動,起始交接點相同的情況下,在輸入任務時,後輸入的先輸出。我的求解方法是整了個結構體封裝起始交接點、終止交接點、輸出次序編號,並對結構體數組排序。具體參考文獻2。
2 測試點:多起點和多終點
說明:
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。
輸入樣例
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
3 參考文獻
[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...