優先佇列 stl 拓撲排序

2022-07-18 07:15:11 字數 1802 閱讀 4443

time limit: 1 sec  memory limit: 128 mb

submit: 169  solved: 73

[submit][status][web board]

馬上要上體育課了,上體育課之前總歸是要排個隊的,ly作為班長,怎麼排隊的問題只能由她來解決,但是馬上要上課了,ly又不清楚所有人的身高,她又不好意思問每個人的身高,因為這樣會顯的自己很不負責,於是她只能通過肉眼觀察...那麼問題來了,她只能觀察出兩個人a和b誰高誰矮,但是她沒有辦法排出乙個序列。

ly都已經幫你出了兩次主意贏過wjw,那麼現在她需要你的幫助,你可以幫她嗎?

(ly會告訴你a和b誰高,如果a比b高,會用a>b來表示)

只有一組資料,每個比較結果佔一行,讀取到檔案結束

若輸入資料無解,則輸出"no answer!",否則從高到低輸出每個人的名字,中間沒有分割符

若有多種情況,輸出字典序最小的答案

e>a

a>s

s>y

easy

#include//

網上大佬的**

using

namespace

std;

typedef

long

long

ll;const

int inf=1e9;

const

int maxn=1e6+5

;vector

edge[50

];int

in[50

];int

main()

else

}priority_queue

,greater >q;//

greater表示左邊大於右邊,vector為儲存的方式;

//less表示右邊大於左邊;

//greater表示內建型別從大到小排序,less表示內建型別從小到大排序。

//左進右出,greater表示最小值優先,less表示最大值優先;

for(int i=0;i<30;i++)

vector

ans;

while(!q.empty())

}if(ans.size()==k.size())

else printf("

no answer!\n");

return0;

}

#include#include

#include

#include

#include

#include

//greater,less;

using

namespace

std;

const

int maxn=100+3

;char str[4

];int

in[maxn];

setss;

vector

ans;

vector

edge[maxn];

priority_queue

,greater >q;

intmain()

else

}for(int i=0;i<100;i++)

}while(!q.empty())}}

//printf("%d\n",ans.size());

//printf("%d\n",ss.size());

if(ans.size()==ss.size())

printf("\n

");}

else

return0;

}

拓撲排序 利用優先佇列

include include include include using namespace std const int maxn 505 vector graph maxn inttopnum maxn nodenum maxn intnumvertex,numedge 有向無環圖一定存在拓撲序...

vijos拓撲編號(逆向拓撲排序 優先佇列)

描述h國有n個城市,城市與城市之間有m條單向道路,滿足任何城市不能通過某條路徑回到自己。現在國王想給城市重新編號,令第i個城市的新的編號為a i 滿足所有城市的新的編號都互不相同,並且編號為 1,n 之間的整數。國王認為乙個編號方案是優美的當且僅當對於任意的兩個城市i,j,如果i能夠到達j,那麼a ...

拓撲排序 優先順序佇列

description 拓撲排序,並且輸出最小字典序的乙個可能順序,採用最小優先順序佇列可以保證按最小字典序輸出。input 輸入第一行包含兩個數n,m分別表示有向無環圖的點數和邊數。接下來m行,每行兩個數ai,bi,表示圖中存在一條ai指向bi的有向邊。output 輸出n個數,每個數用空格隔開,...