d101: Q_7_7 AOV 最早完工時間
Tags : ch7
Accepted rate : 2人/2人 ( 100% ) [非即時]
評分方式:
Tolerant

最近更新 : 2023-12-29 11:40

Content

 某個計劃有 $n$ 項工作,以 $1 \sim n$ 編號,工作之間有前置關係,我們用一個點代表一項工作,以邊 $(a,b)$ 表示 $a$ 是 $b$ 的前置工作,也就是說 $a$ 完成之後,工作 $b$ 才能開始。每一項工作 $v$ 有一個需求的工作時間 $w[v]$,代表該工作至少需要耗時 $w[v]$ 才能完 成。

本題要計算此計畫的最早完工時間,也就是計畫開始後,最早可以完成所有工作的時間。此外,對於某個工作,如果該工作的任何延誤都會讓整個計畫的最早完工時間延後,這個工作就稱為關鍵工作,否則稱為非關鍵工作。請計算那些工作是關鍵工作。

舉例來說,$n=3$,前置關係有 $(1,3)$ 與 $(2,3)$,代表工作 $1$ 完成後才可以開始工作 $3$, 相同的,工作 $2$ 完成後才可以開始工作 $3$。需求工時為 $w[1]=1, w[2]=3, w[3]=4$。
我們可以看得出,工作 $1$ 與 $2$ 可以一起開始平行作業,在時間 $1$ 時可以完成工作 $1$, 時間 $3$ 時可以完成工作 $2$,因此工作 $3$ 最早可以開始的時間是 $3$,而最早的完工時間是 $7$。這三項工作中,工作 $2$ 與 $3$ 是關鍵工作,但工作 $1$ 不是,因為工作 $1$ 只要不花 超過 $3$ 的工時(延誤超過 $2$),並不會影響整個計劃的最早完工時間。 

Input

第一行是兩個正整數 $n$ 與 $m$,代表工作數與前置關係數,點以 $1 \sim n$ 編號,
第二行是 $n$ 個正整數,依序代表每一個工作的需求工時 $w[v]$,接下來有 $m$ 行,每行兩個整數 $u$ 與 $v$,代表 $u$ 是 $v$ 的前置工作。
$n$ 不超過 $10^4$,$m$ 不超過 $10^5$,$w$ 不超過 $10^3$。輸入保證有解。

Output

 第一行輸出最早完工時間,第二行輸出那些工作是關鍵工作,輸出時依照工作的編號由小到大,相鄰兩數字之間以一個空白分格。

Sample Input #1
3 2
1 3 4
1 3
2 3
Sample Output #1
7
2 3
Sample Input #2
4 4
1 2 3 4
1 2
1 3
1 4
3 4
Sample Output #2
8
1 3 4
測資資訊:
記憶體限制: 256 MB
公開 測資點#0 (20%): 1.0s , <1M
公開 測資點#1 (20%): 1.0s , <1M
公開 測資點#2 (20%): 1.0s , <1M
公開 測資點#3 (20%): 1.0s , <1M
公開 測資點#4 (20%): 1.0s , <1M
Hint :
Tags:
ch7
出處:
Prof. Wu [管理者:
ktlai (K.我已霸榜.Tlai)
]


ID User Problem Subject Hit Post Date
沒有發現任何「解題報告」