獎學金 靈活的拓撲排序

2021-07-16 04:47:31 字數 1622 閱讀 3395

對先遍歷後處理要理解的深刻。

從下往上遍歷通過傳引數改變父節點的值。

利用vector存圖可以大大減少空間和時間的開銷。

演算法一定要靈活的掌握,不能死搬硬套,而且對先遍歷後處理的思想理解的要深刻,還有從下往上遍歷時通過傳參改變父節點值。

利用vector存圖可以大大減少空間和時間的開銷,但是要resize()哦。

題目:

00030:獎學金

檢視 提交 統計 提問

總時間限制: 1000ms 記憶體限制: 128000kb

描述期末考試終於完了,老班決定召開班委會,內容嘛,則是可愛的獎學金的問題((*^__^*)),她叫來了一些班委,每位班委提出了自己的意見:「我認為同學a的獎學金應該比b多!」老班決定要找出一種獎學金方案,滿足各位班委的意見,且同時使得總獎學金數最少。每位同學獎學金最少為100元且都為整數。

【輸入】

第一行兩個整數n,m,表示同學總數和班委意見數n<=10000,m<=20000;

以下m行,每行2個整數a,b,表示某個班委認為第a號同學獎學金應該比第b號同學高。

輸入第一行兩個整數n,m,表示同學總數和班委意見數;

以下m行,每行2個整數a,b,表示某個班委認為第a號同學獎學金應該比第b號同學高。

輸出若無法找到合法方案,則輸出「impossible」(不含引號);否則輸出乙個數表示最少總獎學金。

樣例輸入21

12樣例輸出

201

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

vector

>g;

int visited[10001];

int n,s = 0;

int value[10001];

int indexx;

bool dfs(int child,int parent)

else

//拓撲排序的靈活處理,《更新》父節點的值}}

visited[child] = 1;

s += 100 + value[child];

if(parent != 0 && value[child]+1 > value[parent])

value[parent] = value[child] + 1;//思路要嚴密,更新父節點的值

return

true;

}bool toposort()

return

true;

}int main()

if(toposort())

else

printf("impossible\n");

return

0;}

排序 獎學金

某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學排在前面,這樣,每個學生的排序是唯一確定的。任...

獎學金 排序

描述 某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學排在前面,這樣,每個學生的排序是唯一確定...

python 拓撲排序 Python 拓撲排序

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