PTA 7 11 關鍵活動 最短答案!

2021-10-07 12:07:17 字數 1641 閱讀 7972

題目詳情

題目分析:

特殊的輸入樣例

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 節點的最早開始時間 最...