工程
Description
張三是某工程公司的項目工程師。一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,并把這些子工程編號為1、2、…、N;這樣劃分之后,子工程之間就會有一些依賴關系,即一些子工程必須在某些子工程完成之后才能施工,公司需要工程師張三計算整個工程最少的完成時間。
對于上面問題,可以假設:
1、根據預算,每一個子工程都有一個完成時間。
2、子工程之間的依賴關系是:部分子工程必須在一些子工程完成之后才開工。
3、只要滿足子工程間的依賴關系,在任何時刻可以有任何多個子工程同時在施工,也即同時施工的子工程個數不受限制。
例如:有五個子工程的工程規劃表:
現在對于給定的子工程規劃情況,及每個子工程完成所需的時間,如果子工程劃分合理則求出完成整個工程最少要用的時間,如果子工程劃分不合理,則輸出-1。
Input
第1行為正整數N,表示子工程的個數(N<=200)
第2行為N個正整數,分別代表子工程1、2、…、N的完成時間。
第3行到N+2行,每行有N-1個0或1,其中的第K+2行的這些0或1,分別表示“子工程K”與子工程1、2、…、K-1、K+1、…、N的依賴關系(K=1、2、…、N)。每行數據之間均用空格分開。
Output
如果子工程劃分合理則輸出完成整個工程最少要用的時間,如果子工程劃分不合理,則輸出-1。
Sample Input
project.in
5
5 4 12 7 2
0 0 0 0
0 0 0 0
0 0 0 0
1 1 0 0
1 1 1 1.
project.in
5
5 4 12 7 2
0 1 0 0
0 0 0 0
0 0 1 0
1 1 0 0
1 1 1 1
Sample Output
project.out
14
project.out
-1
.
.
.
.
.
分析
設a[i]表示第i個工程最少能在多少時間內完成
先從1到n枚舉,再調用子程序將當前工程的子工程總花費統計起來,最后輸出即可
①→②→③→①→Explotion!(本程序要完成,就要先完成箭頭指向的程序)在這里前提條件與要做的工程重合,故成了死循環,程序會炸
.
.
.
.
.
程序:
轉載于:https://www.cnblogs.com/YYC-0304/p/11094925.html
總結