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...