zoukankan      html  css  js  c++  java
  • 【模板整理】Tarjan

    有向图强连通分量

    int tot,low[N],dfn[N],scc[N],sccno;
    int st[N],top,vis[N];
    void tarjan(int u){
    	int v;
    	low[u]=dfn[u]=++tot;
    	st[top++]=u; 
    	vis[u]=1;
    	for(node *p=h[u];p;p=p->nxt)
    		if(!dfn[v=p->v]){
    			tarjan(v);
    			low[u]=min(low[u],low[v]);
    		}
    		else if(vis[v]==1) low[u]=min(low[u],dfn[v]);
    	if(low[u]==dfn[u]){
    		++sccno;
    		while(1){
    			v=st[--top];
    			scc[v]=sccno;
    			vis[v]=2;
    			if(v==u) break;
    		}
    	}
    }
    

    无向图割点

    int rt,tot,dfn[N],low[N],cut[N],vis[N];
    void tarjan(int u){
    	int v,t=0;
    	low[u]=dfn[u]=++tot;
    	vis[u]=1;
    	for(node *p=h[u];p;p=p->nxt)
    		if(!dfn[v=p->v]){
    			tarjan(v);
    			if(low[v]>=dfn[u]) t++,cut[u]=1;
    			low[u]=min(low[u],low[v]);
    		}
    		else if(vis[v]==1) low[u]=min(low[u],dfn[v]);
    	if(u==rt && t<2) cut[rt]=0;
     	vis[u]=2;
    }
    

    无向图点双连通分量


    无向图桥

    无向图边双联通分量

  • 相关阅读:
    WebSocket
    牛人
    ECSHOP+wamp
    数据结构之-----------排序
    DRGS指标计算方法
    Oracle 11g安装教程
    JavaScript入门
    多态
    类的继承
    上传工具类
  • 原文地址:https://www.cnblogs.com/lindalee/p/11866208.html
Copyright © 2011-2022 走看看