HAOI2006 受歡迎的牛

2022-08-17 13:33:20 字數 1099 閱讀 1471

時間限制: 10 sec  記憶體限制: 162 mb

提交: 4406  解決: 2336

每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數(a,b),表示牛a認為牛b受歡迎。 這

種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭

牛被所有的牛認為是受歡迎的。

第一行兩個數n,m。 接下來m行,每行兩個數a,b,意思是a認為b是受歡迎的(給出的資訊有可能重複,即有可

能出現多個a,b)

乙個數,即有多少頭牛被所有的牛認為是受歡迎的。

3 31 2

2 12 3

1100%的資料n<=10000,m<=50000

題解:tarjan縮圖, 如果有兩個及兩個以上出度為0的就輸出0,排除以上情況輸出出度為0的聯通塊中牛的個數。

#include #define max 10001

using

namespace

std;

struct

node

road[

50001

];int n, m, t, top, cnt, rd, dfn[max], stack[max], low[max], belong[max], num[max], first[max], out

[max];

bool instack[max] = ;

void

read()

}void tarjan(int

v)

else

if(instack[v])

low[v] =min(low[v], dfn[y]);

}if(dfn[v] ==low[v])

while (stack[top + 1] !=v);

}}int

solve()

int maybe = -1

;

for(int i = 1; i <= cnt; ++i)

}return

num[maybe];

}int

main()

sugar

HAOI2006 受歡迎的牛

題目 分析 tarjan縮點。最後如果只有乙個出度為0的點,則答案就是這個點包含的牛數,否則為0.一開始最後統計的時候寫了dfs,後來發現是錯誤的,反例 include include include include include using namespace std const int tma...

HAOI2006 受歡迎的牛

這個就是強連通,計算出度為0的點就好 也沒森麼其它好講的啦 提交傳送們 description 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛a認為牛b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多...

HAOI2006 受歡迎的牛

haoi2006 受歡迎的牛 每一頭牛的願望就是變成一頭最受歡迎的牛。現在有n頭牛,給你m對整數 a,b 表示牛 a 認為牛 b受歡迎。這種關係是具有傳遞性的,如果a認為b受歡迎,b認為c受歡迎,那麼牛a也認為牛c受歡迎。你的任務是求出有多少頭牛被所有的牛認為是受歡迎的。第1行兩個整數n,m 接下來...