日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 1051: [HAOI2006]受欢迎的牛

發(fā)布時(shí)間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1051: [HAOI2006]受欢迎的牛 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1051: [HAOI2006]受歡迎的牛

Time Limit:?10 Sec??Memory Limit:?162 MB
Submit:?7120??Solved:?3779
[Submit][Status][Discuss]

Description

每一頭牛的愿望就是變成一頭最受歡迎的牛。現(xiàn)在有N頭牛,給你M對(duì)整數(shù)(A,B),表示牛A認(rèn)為牛B受歡迎。 這 種關(guān)系是具有傳遞性的,如果A認(rèn)為B受歡迎,B認(rèn)為C受歡迎,那么牛A也認(rèn)為牛C受歡迎。你的任務(wù)是求出有多少頭 牛被所有的牛認(rèn)為是受歡迎的。

Input

第一行兩個(gè)數(shù)N,M。 接下來(lái)M行,每行兩個(gè)數(shù)A,B,意思是A認(rèn)為B是受歡迎的(給出的信息有可能重復(fù),即有可 能出現(xiàn)多個(gè)A,B)

Output

  一個(gè)數(shù),即有多少頭牛被所有的牛認(rèn)為是受歡迎的。

Sample Input

3 3
1 2
2 1
2 3

Sample Output

1

HINT

?

100%的數(shù)據(jù)N<=10000,M<=50000 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstdlib> 5 using namespace std; 6 7 const int maxn=50000+5; 8 9 struct node{ 10 int net; 11 int to; 12 int w; 13 }a[maxn*3]; 14 int head[maxn],dfn[maxn],low[maxn],sum,ans,st[maxn],top; 15 int du[maxn],dep,cnt,tmp,rs[maxn],x[maxn],y[maxn],em[maxn]; 16 bool vis[maxn]; 17 int n,m; 18 int tt; 19 20 inline void add(int x,int y) 21 { 22 a[++cnt].to=y; 23 a[cnt].net=head[x]; 24 head[x]=cnt; 25 } 26 27 void tarjan(int u) 28 { 29 ++dep; 30 low[u]=dfn[u]=dep; 31 st[++top]=u; 32 vis[u]=true; 33 for(int i=head[u];i;i=a[i].net) 34 { 35 int v=a[i].to; 36 if(!dfn[v]) 37 { 38 tarjan(v); 39 low[u]=min(low[u],low[v]); 40 } 41 else if(vis[v]) 42 { 43 low[u]=min(low[u],dfn[v]); 44 } 45 } 46 if(low[u]==dfn[u]) 47 { 48 int now; 49 sum++; 50 do 51 { 52 now=st[top--]; 53 rs[now]=sum; 54 vis[now]=0; 55 em[sum]++; 56 }while(now!=u); 57 } 58 } 59 60 int main() 61 { 62 scanf("%d%d",&n,&m); 63 for(int i=1;i<=m;i++) 64 { 65 scanf("%d%d",&x[i],&y[i]); 66 add(x[i],y[i]); 67 } 68 for(int i=1;i<=n;i++) 69 { 70 if(!dfn[i]) 71 { 72 tarjan(i); 73 } 74 } 75 for(int i=1;i<=n;i++) 76 { 77 for(int j=head[i];j;j=a[j].net) 78 { 79 int v=a[j].to; 80 if(rs[i]!=rs[v]) 81 { 82 du[rs[i]]++; 83 } 84 } 85 } 86 for(int i=1;i<=sum;i++) 87 if(!du[i]) 88 { 89 if(tt) 90 { 91 puts("0\n"); 92 return 0; 93 } 94 tt=i; 95 } 96 printf("%d\n",em[tt]); 97 return 0; 98 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Hammer-cwz-77/p/8645268.html

總結(jié)

以上是生活随笔為你收集整理的BZOJ 1051: [HAOI2006]受欢迎的牛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。