乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。
輸入格式:
首先第一行給出兩個正整數:專案里程碑的數量 n(≤100)和任務總數 m。這裡的里程碑從 0 到 n−1 編號。隨後 m 行,每行給出一項任務的描述,格式為「任務起始里程碑 任務結束里程碑 工作時長」,三個數字均為非負整數,以空格分隔。
輸出格式:
如果整個專案的安排是合理可行的,在一行中輸出最早完工時間;否則輸出"impossible"。
輸入樣例 1:
9120
1602
4035
1412
4135
2540
4694
7757
4682
784
輸出樣例 1:
18
輸入樣例 2:
450
1102
2213
1343
25
輸出樣例 2:
impossible
#include
#include
#include
#include
using
namespace std;
struct node
;map<
int, vector>mp;
queue<
int>q;
int n, m, cnt, earlytime, a, b, c;
int indegee[
100]
, maxtime[
100]
;void
topo()
}}intmain()
);indegee[b]++;
}for
(int i =
0; i < n;
++i)if(
!indegee[i]
) q.
push
(i);
topo()
;for
(int i =
0; i < n;
++i)
earlytime =
max(earlytime, maxtime[i]);
cnt == n ? cout << earlytime : cout <<
"impossible"
;return0;
}
7 1 最短工期 25 分
乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。輸入格式 首先第一行給出兩個正整數 專案里程碑的數量 n 100 和任務總數 m。這裡的里程碑...
(拓撲排序)最短工期 25分
只適用於有向無環圖 有向無環圖一定有拓撲排序 把入度為0的點存放在佇列裡面 刪除該頂點連線的所有邊 解題步驟 記錄每個點的入度大小 把入度為0的點放入佇列中去 用乙個dist陣列存放路徑的大小,用cnt記錄頂點個數 刪除該頂點連線的所有邊,即每條邊對應的點的入度 1 再次把入度為0的點存放在佇列裡面...
未完成 7 13 最短工期 25 分
乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。首先第一行給出兩個正整數 專案里程碑的數量 n 100 和任務總數 m。這裡的里程碑從 0 到...