拓撲排序基礎題 排序

2022-08-12 22:18:16 字數 1259 閱讀 4893

題目

由於公司在2023年的銷售業務成績優秀,公司總經理心情大好,決定給每位員工發獎金。公司決定以每個人本年在公司的貢獻為標準來計算他們得到獎金的多少。於是總經理下令召開 m 方會談。每位參加會談的代表提出了自己的意見:「我認為員工 a 的獎金應該比 b 高!」。總經理決定要找出一種獎金方案,滿足各位代表的意見,且同時使得總獎金數最少。每位員工獎金最少為100元。

輸入格式

第一行兩個整數 n 和 m,表示員工總數和代表數;

接下來有 m 行,每行 2 個整數 a 和 b,表示某個代表認為第 a 號員工獎金應該比第 b 號員工高。

輸出格式

若無法找到合理方案,則輸出「poor xed」;否則輸出乙個數表示最少總獎金。

樣例資料 1

輸入2 1

1 2輸出

201備註

【資料規模】

80%的資料滿足:n<=1000,m<=2000;

100%的資料滿足:n<=10000,m<=20000。

很簡單的一道拓撲排序

如果a的工資要比b高,那就從b向a連一條邊

然後從入度為0的點開始統計

然後用f

f來記錄每個點的工資,當從點i指向點j的時候f[j

]=ma

x(f[

j],f

[i]+

1)f[

j]=m

ax(f

[j],

f[i]

+1)最後的答案就是∑f[

i],1

<=i

<=n

∑f[i

],1<=i

<=n

因為直接雙層迴圈要超時,所以只能迴圈佇列來做,但如果m,n到了151

5的時候,就只能用特殊的資料結構來維護入度了

若一次迴圈中沒有入度為0的點了,而還有點未處理,則有環,無解

**#includeusing namespace std;

inline int read()

int adj[20005],nxt[20005],to[20005],dep[10005],in[10005],f[10005],n,m,cnt;

inline int sum()

inline void addedge(int u,int v)

inline void _(int k)

}inline bool solve(){

int tot=0;

while(tot最近這csdn是什麼鬼?

拓撲排序題集

hdu 5438 題意 有n個池塘和m個管道 每個池塘的價值是v,現在由於資金問題要刪除池塘 但是刪除的池塘必須是最多隻連線乙個管道,否則會 管子會因為池塘的刪除而消失 求最後相連的池塘有奇數個的價值總和是多少 解析 建立無向圖 先用拓撲排序刪除入度為1的所以池塘並標記,然後再用深搜判斷是否是奇數連...

程式設計題 未知出處 任務排序 拓撲排序

知識點 拓撲排序 輸入 幾個偏序 n 5 節點個數 m 4 偏序個數 1223 1315輸出 一種排序方式或不能排序 1 4 2 5 3思路 儲存輸入的拓撲關係,定義陣列記錄每乙個點狀態。對狀態顯示還未被遍歷的點進行dfs 遍歷該點以及與該點有直接拓撲關係的點。在dfs過程中將元素壓入存放拓撲結果的...

python 拓撲排序 Python 拓撲排序

python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...