BZOJ 1051 HAOI2006 受歡迎的牛

2021-08-09 16:54:17 字數 1195 閱讀 6811

description

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

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

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

input

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

能出現多個a,b)

output

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

sample input

3 3

1 22 1

2 3

sample output

1
hint

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

tarjan將環縮成點以後,計算各點的出度,很明顯出度為0的點(所代表的點的個數)就是我們需要的輸出的

#include

using namespace std;

int n,m,now,tot,top,sum,ans;

int lnk[10005],dfn[10005],s[10005],mark[10005],low[10005],q[10005],num[10005],c[10005];

struct edge

e[50005];

int readln()

void add(int

x,int

y)int min(int

x,int

y)void tarjan(int

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

}}int main()

for (int i=1;i<=n;i++) if (!mark[i]) tarjan(i);

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

for (int j=lnk[i];j;j=e[j].nxt)

if (q[i]!=q[e[j].y]) c[q[i]]++;

for (int i=1;i<=sum;i++) if (c[i]==0) ans+=num[i];

printf("%d",ans);

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 受歡迎的牛

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