只適用於有向無環圖把入度為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。這裡的里程碑...