当前位置:   article > 正文

有向图的连通问题_有向图无法全连通怎么办

有向图无法全连通怎么办

有向图的强连通分量:

SSC:给定一个有向图,若图中任意两个点星x,y,存在x->y,且存在y->x,呢么这个图就是强连通分量图.

tarjan求强连通分量:

时间戳:dfn[i],表示搜索的时候首次搜索到i位置的顺序

追溯值:low[i],i的所以孩子存在一条有向边指向i,连接i

1.当结点首次被访问,x入栈,初始化low[x]=dfn[x]

2.(1)扫描从x出发的所以有向边(x->y),若y没有被访问,则(x,y)是树枝边,递归访问y,从y回溯后,令low[x]=min(low[x],low[y])

   (2)若y被访问,且y在栈中,则令low[x]=min(low[x],dfn[y]).

3.遍历完从x出发的所以有向边后,如果low[x]==dfn[x],栈中所以元素都是同一连通分量

代码:

  1. #include<bits/stdc++.h>
  2. #define MAXN 200005
  3. using namespace std;
  4. int to[MAXN<<1],nxt[MAXN<<1],head[MAXN<<1];
  5. int tot,cnt;
  6. int low[MAXN],dfn[MAXN],vis[MAXN];
  7. stack<int> st;
  8. int stck[MAXN<<1],top;
  9. int c[MAXN],num;//c:记录强连通分量,num:强连通分量的数目
  10. void init()
  11. {
  12. tot=1;
  13. top=num=cnt=0;
  14. memset(head,0,sizeof(head));
  15. }
  16. void add(int u,int v)
  17. {
  18. to[++tot]=v;
  19. nxt[to
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/238904
推荐阅读
相关标签
  

闽ICP备14008679号