首页 > 编程语言 > 详细

tarjan算法——割边(桥)

时间:2019-09-21 13:30:44      阅读:123      评论:0      收藏:0      [点我收藏+]

模板:

技术分享图片
 1 int vis[maxn],dfn[maxn],low[maxn];
 2 int n,m,a[maxn][maxn],lay;
 3 #define mp make_pair
 4 #define fi first
 5 #define se second
 6 vector<pair<int,int> >ans;
 7 void tarjan(int u,int father) {
 8     low[u]=dfn[u]=++lay;
 9     vis[u]=1;
10     for(int v=0;v<n;v++) {
11         if(v==father) continue;
12         if(a[u][v]&&!vis[v]) {
13             tarjan(v,u);
14             low[u]=min(low[u],low[v]);
15             if(dfn[u]<low[v])
16                 ans.push_back(mp(min(u,v),max(u,v)));
17         }
18         else if(a[u][v]) low[u]=min(dfn[v],low[u]);
19     }
20 }
View Code

 

tarjan算法——割边(桥)

原文:https://www.cnblogs.com/wuliking/p/11562032.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!