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個數,每個數用空格隔開,...