国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

強(qiáng)連通分量 洛谷2818

2019-11-08 02:59:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本次專題是強(qiáng)連通分量的tarjan算法,以下程序包含stl建圖,dfs遍歷,強(qiáng)連通分量假縮點(diǎn),求縮點(diǎn)入度出度。

#include<iostream>#include<cstdio>#include<stack>#include<vector>#include<cmath>#define M 10005using namespace std;stack<int>S;int PRe[M],//dfs的步數(shù)(時(shí)間) low[M],//若屬于同一強(qiáng)連通分量,則Low值更改為之前的最小時(shí)間; c[M],k[M], belong[M],//記錄是否屬于同一強(qiáng)連通分量 in[M],//分量入度 out[M];//分量出度int m,n,time1,time2,t1,t2,w;vector<int>g[M];void dfs(int u){ pre[u]=low[u]=time1++;//步數(shù)+1 S.push(u);//當(dāng)前節(jié)點(diǎn)出棧 for(int i=0;i<g[u].size();i++)//遍歷當(dāng)前節(jié)點(diǎn)所連結(jié)點(diǎn) { int v=g[u][i]; if(!pre[v])//若未被遍歷 { dfs(v); low[u]=min(low[u],low[v]);//low值更改 } if(!c[v]) low[u]=min(pre[v],low[u]); } if(pre[u]==low[u])//若當(dāng)前節(jié)點(diǎn)步數(shù)值等于low值,則一個(gè)強(qiáng)連通分量構(gòu)成 { time2++;//分量數(shù)+1 while(1) { int x=S.top();S.pop();//出棧 c[x]=time2; belong[x]=time2; if(x==u)break; } }}void find(){ for(int i=1;i<=n;i++) if(!pre[i])dfs(i);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { while(1) { scanf("%d",&t1); if(t1==0)break; g[i].push_back(t1); } } find(); for(int i=1;i<=n;i++) for(int j=0;j<g[i].size();j++) { int v=g[i][j]; if(belong[i]!=belong[v])//若不屬于同一強(qiáng)連通分量 { in[belong[v]]++;//下一分量入度加1 out[belong[i]]++;//當(dāng)前分量出度加1 } } //以下過(guò)程針對(duì) 洛谷P2812 /*int ans1=0,ans2=0; for(int i=1;i<=time2;i++) { if(in[i]==0) ans1++; if(out[i]==0) ans2++; } if(time2==1) { printf("1/n0"); return 0; } ans2=max(ans1,ans2); printf("%d/n%d",ans1,ans2);*/ return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗平县| 吉木乃县| 敦煌市| 宣恩县| 阿拉尔市| 灵丘县| 义乌市| 奈曼旗| 镇安县| 张家界市| 阜南县| 新田县| 双峰县| 潮州市| 钟山县| 绥宁县| 邵阳县| 化德县| 浦北县| 黄骅市| 合作市| 克什克腾旗| 绥滨县| 宁晋县| 郎溪县| 清新县| 南丹县| 盖州市| 额尔古纳市| 三门县| 延边| 专栏| 休宁县| 卢湾区| 德昌县| 陈巴尔虎旗| 延津县| 慈溪市| 泰安市| 白玉县| 泉州市|