zoukankan      html  css  js  c++  java
  • 边双连通分量模板

    //Tarjan求桥
    void tarjan(int now,int id){
    	dfn[now]=low[now]=++dfnc;
    	for(int i=head[now];i!=-1;i=b[i].next){
    		if(i==(id^1)) continue;
    		int u=b[i].to;
    		if(!dfn[u]){
    			tarjan(u,i);
    			low[now]=min(low[now],low[u]);
    			if(dfn[now]<low[u]) bridge[i]=bridge[i^1]=true;
    		} else {
    			low[now]=min(low[now],dfn[u]);
    		}
    	}
    }
    
    //求边双连通分量
    void dfs(int now,int id){
    	shuyu[now]=id;
    	for(int i=head[now];i!=-1;i=b[i].next){
                    int u=b[i].to;
    		if(shuyu[u]) continue;
    		if(!bridge[i]) dfs(u,id);
    	}
    }
    
    //边双缩点
    	for(int i=1;i<=n;i++){
    		for(int j=head[i];j!=-1;j=b[j].next){
                            int u=b[j].to;
    			if(shuyu[i]!=shuyu[u]){
    				ad(shuyu[i],shuyu[u]);
    				ad(shuyu[u],shuyu[i]);
    			}
    		}
    	}
    
  • 相关阅读:
    shift
    start
    exit
    call
    goto
    Activity生命周期(二)
    color 和 mode
    pause 和 title
    day 4 飞机大战-面向对象
    day 3 创建窗口,移动-函数版
  • 原文地址:https://www.cnblogs.com/liuchanglc/p/12812719.html
Copyright © 2011-2022 走看看