week8 B 貓貓向前衝

2021-10-05 03:11:47 字數 1148 閱讀 7880

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

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

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

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

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

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

4 3

1 22 3

4 3

1 2 4 3

本題考察拓撲排序

拓撲排序的輸出規則為,只有當指向某點的所有邊的起點全部輸出之後,此點才可以輸出

因此在建圖過程中需要採用in_deg陣列來表示點的入度,此點a輸出的條件為in_deg[a]為0。

程式中採用kahn演算法,此演算法類似於bfs廣度優先搜尋,

首先遍歷in_deg將入度為0的點入隊,然後對於每次的隊首,將其取出,並從隊中刪除,將它加入ans陣列中,儲存結果,並且更新它所指向的點的入度,並使更新完**度為0的點入隊,直到隊列為空,此時排好序的數就全部存入ans陣列中。

由於最後一名沒有空格,在遍歷陣列時,要查詢每個數是不是最後乙個數。

#include#include#include#include#includeusing namespace std;

vectore[600];

priority_queue,greater> q;

int in_deg[600];

int main()

for(int i=0;i}

}return 0;

}

WEEK 8 B 貓貓向前衝

眾所周知,tt 是一位重度愛貓人士,他有乙隻神奇的魔法貓。有一天,tt 在 b 站上 貓貓的比賽。一共有 n 只貓貓,編號依次為1,2,3,n進行比賽。比賽結束後,up 主會為所有的貓貓從前到後依次排名並發放愛吃的小魚幹。不幸的是,此時 tt 的電子裝置遭到了宇宙射線的降智打擊,一下子都連不上網了,...

week8 B 貓貓向前衝(拓撲排序)

眾所周知,tt 是一位重度愛貓人士,他有乙隻神奇的魔法貓。有一天,tt 在 b 站上 貓貓的比賽。一共有 n 只貓貓,編號依次為1,2,3,n進行比賽。比賽結束後,up 主會為所有的貓貓從前到後依次排名並發放愛吃的小魚幹。不幸的是,此時 tt 的電子裝置遭到了宇宙射線的降智打擊,一下子都連不上網了,...

week8 B 貓貓向前衝(拓撲排序)

一 題目描述 眾所周知,tt 是一位重度愛貓人士,他有乙隻神奇的魔法貓。有一天,tt 在 b 站上 貓貓的比賽。一共有 n 只貓貓,編號依次為1,2,3,n進行比賽。比賽結束後,up 主會為所有的貓貓從前到後依次排名並發放愛吃的小魚幹。不幸的是,此時 tt 的電子裝置遭到了宇宙射線的降智打擊,一下子...