C 班長競選(Week 8作業)

2021-10-23 06:27:12 字數 2123 閱讀 2301

大學班級選班長,n 個同學均可以發表意見

若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適

勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?

input:本題有多組資料。第一行 t 表示資料組數。每組資料開始有兩個整數 n 和 m (2 <= n <= 5000, 0 sample input

24 3

3 22 0

2 13 3

1 02 1

0 2sample output

case 1: 2

0 1case 2: 2

0 1 2

思想:強連通分量 縮點

實現:通過強連通分量實現縮點,同乙個強連通分量中的所有學生內部投票數相等(=n-1)

乙個學生的得票數=內部得票數+其他與之相連的強連通分量的票數

對於內部得票數:

等於內部人數-1

對於外部得票數:

等於其他指向這個學生所在的連通分量的連通分量的人數

過程: 構建原圖和反向圖

fedge和dedge

計算出每個節點對應的連通分量

利用dfs計算出圖的後序序列

根據逆後序序列遍歷反向圖,構建強連通分量

根據構建出的強連通分量進行縮點得到縮點後的圖ledge,並記錄下縮點後對應的內部節點個數

遍歷每乙個節點,通過dfs利用連通分量計算得到的投票數

找出最大投票數ansmax,並找出所有與ansmax相等的節點,輸出

總結:這個題需要用到的陣列和數比較多,在寫的時候要注意思路清晰;同時,由於是多組資料,一定要確保陣列和數初始化正確(提交發生了re原因就是有個數值沒有進行初始化)

#include

#include

#include

#include

using

namespace std;

const

int inf=

0x3f3f3f3f

;const

int maxn=

5005

;const

int maxm=

30010

;struct nodefedge[maxm]

,dedge[maxm]

,ledge[maxm]

;int fhead[maxn]

,dhead[maxn]

,lhead[maxn]

,ans[maxn]

;int vis[maxn]

,score[maxn]

,scc[maxn]

,lvis[maxn]

,dfn[maxn]

;int m,n,n,t,fnum,dnum,lnum,dcnt,scnt,ansmax;

void

add(

int x,

int y,node *edge,

int*head,

int&num)

void

lastedge()

}}void

dfs1

(int s)

void

dfs2

(int s)

void

kosaraju()

void

dfs3

(int s,

int u)}}

void

init()

intmain()

kosaraju()

;lastedge()

;for

(int i=

1;i<=scnt;i++

)for

(int i=

1;i<=scnt;i++

) ansmax=

max(ansmax,ans[i]);

cout<<

"case "

<<<

": "

true

;for

(int i=

0;icout<}return0;

}

Week8作業 C 班長競選

問題描述 大學班級選班長,n個同學均可以發表意見。若意見為a b,則表示a認為b合適。意見具有傳遞性,即a認為b合適,b認為c合適,則a也認為c合適。共m條意見,要求出最高票數和候選人名單。準備知識 kosaraju演算法 1.第一遍 dfs 確定原圖的逆後序序列。2.第二遍 dfs 在反圖中按照逆...

Week8 作業 C 班長競選

大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?input 本題有多...

week8作業C 班長競選 kosaraju

題目 大學班級選班長,n 個同學均可以發表意見 若意見為 a b 則表示 a 認為 b 合適,意見具有傳遞性,即 a 認為 b 合適,b 認為 c 合適,則 a 也認為 c 合適 勤勞的 tt 收集了m條意見,想要知道最高票數,並給出乙份候選人名單,即所有得票最多的同學,你能幫幫他嗎?輸入 本題有多...