(拓撲排序)最短工期 25分

2021-10-09 22:27:55 字數 856 閱讀 8900

只適用於有向無環圖

有向無環圖一定有拓撲排序

把入度為0的點存放在佇列裡面

刪除該頂點連線的所有邊

解題步驟:

記錄每個點的入度大小

把入度為0的點放入佇列中去

用乙個dist陣列存放路徑的大小,用cnt記錄頂點個數

刪除該頂點連線的所有邊,即每條邊對應的點的入度-1

再次把入度為0的點存放在佇列裡面

更新dist陣列的大小,存放路徑最長的

如果記錄的頂點個數小於該圖中的頂點個數,則該圖中存在迴路,不能實現拓撲排序

#include#include#include#include#includeusing namespace std;

const int n = 110;

#define mm(a,x) memset(a,x,sizeof a)

#define inf 0x3f3f3f3f

int mp[n][n],d[n],dist[n];

int n,m;

int ans;

int topsort()

while(q.size())

}} }

if(cnt < n) return 0;

else return ans;

}int main()

int t = topsort();

if(t == 0) cout<<"impossible\n";

else cout

}

最短工期 25分

乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。輸入格式 首先第一行給出兩個正整數 專案里程碑的數量 n 100 和任務總數 m。這裡的里程碑...

PTA最短工期 拓撲排序

乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。首先第一行給出兩個正整數 專案里程碑的數量 n 100 和任務總數 m。這裡的里程碑從 0 到...

7 1 最短工期 25 分

乙個專案由若干個任務組成,任務之間有先後依賴順序。專案經理需要設定一系列里程碑,在每個里程碑節點處檢查任務的完成情況,並啟動後續的任務。現給定乙個專案中各個任務之間的關係,請你計算出這個專案的最早完工時間。輸入格式 首先第一行給出兩個正整數 專案里程碑的數量 n 100 和任務總數 m。這裡的里程碑...