Week8 作業 B 貓貓向前衝

2021-10-04 23:33:08 字數 1562 閱讀 9279

眾所周知, 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 31 2

2 34 3

1 2 4 3

• 將入度為0的點組成乙個集合s

• 每次從s裡面取出乙個頂點u(可以隨便取)放入l, 然後遍歷頂點u的 所有邊(u, v), 並刪除之,並判斷如果該邊的另乙個頂點v,如果在移除 這一條邊**度為0, 那麼就將這個頂點放入集合s中。不斷地重複取 出頂點然後重複這個過程……

• 最後當集合為空後,就檢查圖中是否存在任何邊。如果有,那麼這個圖 一定有環路,否者返回l,l中順序就是拓撲排序的結果

• 貓貓們之間的勝負關係可以構成一張有向無環圖

• p1 贏了p2 等價於結點p1到結點p2有一條邊

• p1 贏了p2意味著在最終的名次序列中p1要在p2的前面

• 問題轉化為求字典序最小的拓撲序

• 任一時刻佇列中所有結點意味著已經可以確定名次關係並且互相之 間沒有依賴

• 取隊首的時候可以取佇列中編號最小的點出隊

• 使用優先佇列替換佇列

1、注意輸入有若干組、、又犯了這個錯誤、、絕了

#include

#include

#include

using

namespace std;

const

int maxn=

5e4+10;

const

int maxm=

5e5+10;

int inf=

1e9;

// 前向星存圖

int head[maxn]

, tot;

struct edgee[maxm]

;void

add(

int x,

int y,

int w)

int dis[maxn]

,vis[maxn]

;void

spfa

(int s)}}

}}intmain()

for(

int i=

1;i<=bmax;i++

)spfa(0

);cout<

}

Week 8 作業 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 的電子裝置遭到了宇宙射線的降智打擊,一下子都連...