Week 8 作業 B 貓貓向前衝

2021-10-23 06:16:51 字數 1477 閱讀 2751

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

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

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

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

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

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

431

2234

3

124

3

在乙個有向無環圖里,我們對圖中的點進行排序,對於任意有向邊(u,v),u必在v前面。

我們可以將圖中入度為0的點加入乙個集合s,從s中取出任意點u,對於該點,若存在邊(u,v)則去除該邊,則v入度減1,若入度變為0則同理加入集合。一直重複這一過程,則點出集合的順序即為該圖的乙個拓撲序列。

若最後仍有點未排序,則圖中必有環。

貓的勝負關係即可想象成圖中的邊,a勝b,則有a指向b的邊,這些點的拓撲序列即為最終名次。因為要求輸出字典序最小的拓撲序列,因此集合可用乙個最小堆來代替,這時求出的拓撲序列即為所求。

#include

#include

#include

#include

using

namespace std;

const

int m=

100000+10

;const

int n=

500+10;

struct edgee[m]

;int head[n]

,cnt[n]

,tot=0;

void

add(

int u,

int v)

intmain

(int argc,

char

** ar**)

for(

int i=

1;i<=n;i++)if

(cnt[i]==0

) q.

push

(i);

bool flag=

false

;while

(!q.

empty()

)}printf

("\n");

}return0;

}

Week8 作業 B 貓貓向前衝

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

SDU程式設計思維Week8 作業 B 貓貓向前衝

有 n 只貓貓,編號依次為1,2,3,n進行比賽。比賽結束後,up 主會為所有的貓貓從前到後依次排名並發放愛吃的小魚幹。不幸的是看不到最後的頒獎典禮。不幸中的萬幸,tt 的魔法貓將每場比賽的結果都記錄了下來,現在他想程式設計序確定字典序最小的名次序列,請你幫幫他。輸入有若干組,每組中的第一行為二個數...

Week8 貓貓向前衝 拓撲排序

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