第八周作業 貓貓向前衝

2021-10-05 03:13:53 字數 1685 閱讀 2682

一、題目

眾所周知, tt 是一位重度愛貓人士,他有乙隻神奇的魔法貓。

有一天,tt 在 b 站上**貓貓的比賽。一共有 n 只貓貓,編號依次為1,2,3,…,n進行比賽。比賽結束後,up 主會為所有的貓貓從前到後依次排名並發放愛吃的小魚幹。不幸的是,此時 tt 的電子裝置遭到了宇宙射線的降智打擊,一下子都連不上網了,自然也看不到最後的頒獎典禮。

不幸中的萬幸,tt 的魔法貓將每場比賽的結果都記錄了下來,現在他想程式設計序確定字典序最小的名次序列,請你幫幫他。

二、輸入

輸入有若干組,每組中的第一行為二個數n(1<=n<=500),m;其中n表示貓貓的個數,m表示接著有m行的輸入資料。接下來的m行資料中,每行也有兩個整數p1,p2表示即編號為 p1 的貓貓贏了編號為 p2 的貓貓。

三、輸出

給出乙個符合要求的排名。輸出時貓貓的編號之間有空格,最後一名後面沒有空格!

其他說明:符合條件的排名可能不是唯一的,此時要求輸出時編號小的隊伍在前;輸入資料保證是正確的,即輸入資料確保一定能有乙個符合要求的排名。

四、樣例輸入輸出

input

4 3

1 22 3

4 3

output

1 2 4 3

五、解題思路

拓撲排序。

如果編號為 p1 的貓貓贏了編號為 p2 的貓貓,則在圖中新增有向邊p1->p2,這樣可以保證拓撲排序後p1一定在p2之前。記錄每個點的入度,如果點的入度為0,則證明沒有贏了該只貓的其他貓貓了,該點應該在其他點前。

因為題目要求輸出時編號小的隊伍在前,定義優先順序佇列儲存。開始將入度為0的點加入優先順序佇列中,逐個將隊首的點從圖中去除,將與點存在有向邊的點的入度-1。在每次點出隊後,將入度變更**度為0的點入隊。

六、**樣例

#include

#include

#include

using

namespace std;

int n,m;

int p1,p2;

struct edge

ed[50010];

int head[

505]

;int in_deg[

505]

;int tot;

void

add(

int x,

int y)

priority_queue<

int> q;

vector<

int> ans;

void

toposort()

}while

(q.size()

)}for(

int i=

0;i1;i++

)printf

("%d\n"

,ans[n-1]

);}int

main()

for(

int i=

0;i)toposort()

;}return0;

}

第八周作業

1 理解窗體的檔案含義及組織結構 如 form1.cs form1.designer.cs form1.resx 控制項的屬性 方法和事件。2 完全用 的方式在form1.cs檔案中建立乙個文字標籤物件label1,用 設定label1的parent location name text autos...

第八周作業

1 顯示統計占用系統記憶體最多的程序,並排序 2 編寫指令碼,使用 for 和 while 分別實現 192.168.0.0 24 網段內,位址是否能夠 ping 通,若 ping 通則輸出 success 若 ping 不通則輸出 fail 3 每週的工作日 1 30,將 etc 備份至 back...

第八周作業

本週是團隊專案的最後一周,我們的團隊專案也完成了大部分的工作。下面是我們近兩周的工作內容,以及我在這個團隊專案中的總結與心得體會。我們小組所進行的專案是仿照手遊 球球大作戰 製作3d的pc版遊戲。到目前為止,我們已經完成了大部分文件與編碼工作,還差測試文件的成型 其它文件的細節修改與一些bug的修補...