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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 1093 [ZJOI2007]最大半连通子图

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1093 [ZJOI2007]最大半连通子图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1093: [ZJOI2007]最大半連通子圖

Description

  一個有向圖G=(V,E)稱為半連通的(Semi-Connected),如果滿足:?u,v∈V,滿足u→v或v→u,即對于圖中任意兩點u,v,存在一條u到v的有向路徑或者從v到u的有向路徑。若G'=(V',E')滿足V'?V,E'是E中所有跟V'有關的邊,則稱G'是G的一個導出子圖。若G'是G的導出子圖,且G'半連通,則稱G'為G的半連通子圖。若G'是G所有半連通子圖中包含節點數最多的,則稱G'是G的最大半連通子圖。給定一個有向圖G,請求出G的最大半連通子圖擁有的節點數K,以及不同的最大半連通子圖的數目C。由于C可能比較大,僅要求輸出C對X的余數。

Input

  第一行包含兩個整數N,M,X。N,M分別表示圖G的點數與邊數,X的意義如上文所述接下來M行,每行兩個正整
數a, b,表示一條有向邊(a, b)。圖中的每個點將編號為1,2,3…N,保證輸入中同一個(a,b)不會出現兩次。N ≤1
00000, M ≤1000000;對于100%的數據, X ≤10^8

Output

  應包含兩行,第一行包含一個整數K。第二行包含整數C Mod X.

Sample Input

6 6 20070603
1 2
2 1
1 3
2 4
5 6
6 4

Sample Output

3
3

  這是一道水題無疑。但是,所謂的半連通確實很能混淆視聽。既然題目只針對所謂的“最大半連通子圖”,那就依它來吧。   很明顯強連通滿足半聯通的條件。然后再想,不在同一個強連通分量中,怎樣才能做到所謂的“半連通”?   可能你已經明白了。實在是太簡單不過了。找DAG(人稱“大哥”)上的一條鏈足矣。   而“最大半連通子圖擁有的節點數”,即是找縮點后DAG圖中擁有最多節點的鏈。注意,此處并不是找最長鏈。   另外,計數?簡單。按拓撲序更新即是了。   但是,但是,但是!   我第一次交上去WA了。因為,圖中有重邊。DP更新方案數時很有可能重復計數。   代碼如下: 1 /************************************************************** 2 Problem: 1093 3 User: Doggu 4 Language: C++ 5 Result: Accepted 6 Time:1360 ms 7 Memory:23928 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <cstring> 12 #include <algorithm> 13 14 template<class T>inline void readin(T &res) { 15 static char ch;T flag=1; 16 while((ch=getchar())<'0'||ch>'9')if(ch=='-')flag=-1; 17 res=ch-48;while((ch=getchar())>='0'&&ch<='9')res=(res<<1)+(res<<3)+ch-48;res*=flag; 18 } 19 20 const int N = 100100; 21 const int M = 1001000; 22 struct Edge {int v,upre;}; 23 struct CON { 24 Edge e[M];int head[N], ne; 25 void clear(int p) {ne=p;memset(head,p,sizeof(head));} 26 inline void adde(int u,int v) {e[++ne]=(Edge){v,head[u]};head[u]=ne;} 27 }g,ng; 28 29 int n, m, MOD, u, v; 30 int dfn[N], low[N], idy, stack[N], top, col[N], tcol; 31 int siz[N], f[N], t[N], in[N], vis[N]; 32 bool ins[N]; 33 void tarjan(int u) { 34 dfn[u]=low[u]=++idy; 35 stack[++top]=u;ins[u]=1; 36 for( int i = g.head[u]; i; i = g.e[i].upre ) { 37 int v=g.e[i].v; 38 if(!dfn[v]) tarjan(v), low[u]=std::min(low[u],low[v]); 39 else if(ins[v]) low[u]=std::min(low[u],dfn[v]); 40 } 41 if(low[u]==dfn[u]) { 42 ++tcol; 43 while(stack[top+1]!=u) { 44 col[stack[top]]=tcol; 45 siz[tcol]++; 46 ins[stack[top--]]=0; 47 } 48 } 49 } 50 inline void add(int &a,int b) {a=a+b>MOD?a+b-MOD:a+b;} 51 int main() { 52 readin(n);readin(m);readin(MOD); 53 g.clear(0);ng.clear(0); 54 for( int i = 1; i <= m; i++ ) { 55 readin(u);readin(v); 56 g.adde(u,v); 57 } 58 for( int i = 1; i <= n; i++ ) if(!dfn[i]) tarjan(i); 59 for( int u = 1; u <= n; u++ ) for( int i = g.head[u]; i; i=g.e[i].upre ) { 60 int v=g.e[i].v; 61 if(col[u]!=col[v]) ng.adde(col[u],col[v]), in[col[v]]++; 62 } 63 top=0; 64 for( int i = 1; i <= tcol; i++ ) if(!in[i]) stack[++top]=i, f[i]=siz[i], t[i]=1; 65 while(top) { 66 int u=stack[top];top--; 67 for( int i = ng.head[u]; i; i = ng.e[i].upre ) { 68 int v=ng.e[i].v; 69 in[v]--; 70 if(!in[v]) stack[++top]=v; 71 if(vis[v]==u) continue; 72 if(f[u]+siz[v]>f[v]) f[v]=f[u]+siz[v], t[v]=t[u]; 73 else if(f[u]+siz[v]==f[v]) add(t[v],t[u]); 74 vis[v]=u; 75 } 76 } 77 int num=0, ans=0; 78 for( int i = 1; i <= tcol; i++ ) num=std::max(num,f[i]); 79 printf("%d\n",num); 80 for( int i = 1; i <= tcol; i++ ) if(f[i]==num) add(ans,t[i]); 81 printf("%d\n",ans); 82 return 0; 83 } 84 tarjan縮點+拓撲排序簡單DP

轉載于:https://www.cnblogs.com/Doggu/p/bzoj1093.html

總結

以上是生活随笔為你收集整理的BZOJ 1093 [ZJOI2007]最大半连通子图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品视频中文字幕 | 中文字幕在线乱 | 喷潮在线观看 | 人妻熟女一区 | 伊人久久视频 | 毛片基地在线观看 | 久久久极品 | 免费的黄色的视频 | 免费人成年激情视频在线观看 | 亚洲一区二区三区四区五区六区 | 夜夜嗨av一区二区三区四区 | 欧美激情久久久久 | 大地资源高清播放在线观看 | 欧美日韩一二区 | 五月婷婷激情五月 | 美女被娇喘视频 | 97影视 | 久久久久久久久久久av | 亚洲影音 | 成人免费观看av | 男人的天堂va | 无码人妻精品一区二区三应用大全 | 欧美三级网站 | 久久精品专区 | 图片区亚洲色图 | av网站国产 | 在线亚洲+欧美+日本专区 | 内射毛片内射国产夫妻 | 精品免费在线视频 | 精品视频不卡 | 激情综合小说 | 亚洲第1页 | 九九九热 | 欧美日韩国产专区 | 亚洲区欧美 | 国内毛片毛片毛片毛片 | 欧美成人dvd在线视频 | 蜜臀久久99精品久久久无需会员 | 天天爱天天舔 | 一久久久| 欧美三区在线观看 | 久久99免费视频 | 大桥未久在线视频 | 99一区二区| 农村妇女精品一区二区 | 韩国主播青草200vip视频 | www.com亚洲| 九月婷婷| 99综合在线 | 九九热免费视频 | av网站免费在线观看 | 男女偷爱性视频刺激 | 777欧美| 日韩电影在线观看一区 | 在线你懂的 | 日韩av一二三区 | 色综合久久网 | 欧洲精品一区二区三区久久 | 亚洲永久免费视频 | 114国产精品久久免费观看 | 日韩欧美综合视频 | 日韩视频一区二区三区在线播放免费观看 | 爱情岛论坛永久入址在线 | 国产偷亚洲偷欧美偷精品 | 日本少妇吞精囗交视频 | 亚洲精品综合网 | brazzers精品成人一区 | 国产在线123 | 99久久九九 | 久久精品66 | 宅男的天堂 | 伊人9999 | 男阳茎进女阳道视频大全 | 日本免费看 | 91精品一区二区三 | 欧美日韩一区二区精品 | 久久99国产精品久久99果冻传媒 | 中文字幕在线免费播放 | 精品一区二区三区蜜桃 | 成人在线视屏 | 国产不卡毛片 | 国产911在线观看 | а√中文在线资源库 | 亚色视频| 色97| 一级黄色短视频 | 人人插人人澡 | 精品妇女一区二区三区 | 涩涩国产 | 狠狠躁日日躁夜夜躁 | 国产在线日韩 | 五月婷婷久久综合 | 午夜影院免费在线观看 | 欧美视频一区二区三区四区在线观看 | 日本欧美亚洲 | 91精品国产色综合久久不卡粉嫩 | caoporen在线| 男女性杂交内射妇女bbwxz | 日本调教电影 |