題目詳情
題目分析:
特殊的輸入樣例
11141
2413
3245
3434
5146
6575
6728
3793
79106
410210
65611
4
輸出樣例
213-
>44
->106
->118
->39
->310
->
6
注意這裡面沒有6->7
圖中終點最早發生時間為21
,而7
這個終點最早發生時間為19
,所以7
這個終點是松節點,不能作為關鍵路徑輸出
#include
#include
#include
#include
using
namespace std;
typedef
int node_number;
//node_number節點編號
int queue[
111]
, now, max_time, front, rear, counts, startnode, endnode, nodenum, edgenum, cost;
struct edge
//建構函式};
struct node
;void
calculateetime
(map
&graph)
;//計算事件最早完成時間
void
calculateltime
(map
&graph)
;//計算使事件最晚完成時間
void
printkeyroads
(map
&graph)
;//輸出關鍵路徑
intmain()
calculateetime
(graph)
;calculateltime
(graph)
;printkeyroads
(graph);}
void
calculateetime
(map
&graph)
while
(front != rear)}}
if(counts != graph.
size()
)//圖中能夠拓撲排序的節點個數小於圖中節點的總個數,說明存在環結構,不能拓撲排序
cout <<0,
exit(0
);//結束程式
else
cout << max_time << endl;
//否則,輸出最長時間,即最早完成時間
}void
calculateltime
(map
&graph)
}void
printkeyroads
(map
&graph)
PTA 7 11 拯救007 基礎dfs
在老電影 007之生死關頭 live and let die 中有乙個情節,007被毒販抓到乙個鱷魚池中心的小島上,他用了一種極為大膽的方法逃脫 直接踩著池子裡一系列鱷魚的大腦袋跳上岸去!據說當年替身演員被最後一條鱷魚咬住了腳,幸好穿的是特別加厚的靴子才逃過一劫。設鱷魚池是長寬為100公尺的方形,中...
7 11 關鍵活動
n 和 m,其中 n是任務交接點 即銜接相互依賴的兩個子任務的節點,例如 若任務2要在任務1完成後才開始,則兩任務之間必有乙個交接點 的數量。交接點按1 n編號,m是子任務的數量,依次編號為1 m。隨後 m行,每行給出了3個正整數,分別是該任務開始和完成涉及的交接點編號以及該任務所需的時間,整數間用...
7 11 關鍵活動(二)
7 11 關鍵活動 鑑於我開始的做法不太好,dfs遍歷了起點和終點間的全部路徑,雖然是可以找到關鍵路徑的,但是還要去重之後才能得到結果。於是嘗試經典的關鍵路徑演算法 1 通過拓撲排序計算出每個節點的最早開始時間,以及乙個拓撲序列s 2 反向遍歷拓撲序列s計算出最晚開始時間 3 節點的最早開始時間 最...