bzoj1051 HAOI2006 受歡迎的牛

2021-07-26 17:44:18 字數 1071 閱讀 5344

每一頭牛的願望就是變成一頭最受歡迎的牛。現在有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

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

其實就是強聯通分量,然後重建一波圖就搞定了。

#include 

using namespace std;

const int n = 10005;

const int m = 50005;

struct edges

e[m], e[m];

int n, m;

int first[n], first[n], tot, tot;

int low[n], dfn[n], s[n], w[n], cnt, top;

int cnt[n], num;

bool vis[n], inq[n];

inline int

read()

returnx;}

inline void add_edge(int

x, int

y)inline void add_edge(int

x, int

y)void dfs(int p)else

if (inq[y]) low[p] = min(low[p], dfn[y]);

if (low[p] == dfn[p])

}}void rebuild_graph()

void tarjan()

int work()

return res;

}int main()

tarjan();

printf("%d\n", work());

return

0;}

BZOJ1051 HAOI2006受歡迎的牛

請原諒我,這題實在和bzoj1093太像 了,copy過來改一改,很多沒有用,然後一起嘿嘿嘿 include include include include include include include using namespace std typedef long long ll inline...

bzoj1051 HAOI2006 受歡迎的牛

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

bzoj1051 HAOI2006 受歡迎的牛

題目 哇,csdn部落格 改版了,還有什麼優質博主搶先體驗版,手賤點了試用,哇塞,好。醜。不過據說全部都要改,這樣我的心情就好了許多。再來看這道題,比較經典的tarjan縮點題。先用tarjan縮點,點內每乙個小點都能互相到達。大點之間建有向邊,如果只存在乙個大點的出度為0,那麼它的大小就是答案。存...