点双连通模版 求割点,点双缩点
来源:互联网 发布:up to date数据库介绍 编辑:程序博客网 时间:2024/04/30 08:11
一个割点属于他所临的所有双连通分量:(即点双连通)
#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set>#include<map>#include<vector>#include<cstring>#include<stack>#include<cmath>#include<queue>using namespace std;#define M 200004#define N 10004//黑匣子调用//1、init()//2、加边//3、find_bcc(1,n);若点标从1开始//4、得到每个点所属的连通分支Belong[] 是否为割点iscut[], 新图G[N]; 新图点标从1-blockstruct Edge{int from,to,nex;}edge[M*2];int head[N],edgenum;void add(int u, int v){Edge E ={u,v,head[u]}; edge[edgenum] = E ; head[u]=edgenum++;Edge E2={v,u,head[v]}; edge[edgenum] = E2; head[v]=edgenum++;}int DFN[N],dfs_clock,block;int Belong[N];bool iscut[N];// 割顶的bccno无意义stack<Edge> S;vector<int>G[N];int Tarjan(int u,int fa){int lowu, child=0;lowu = DFN[u] = ++dfs_clock;for(int i=head[u]; ~i; i = edge[i].nex){int v = edge[i].to;Edge e;e.from=u,e.to=v;if(!DFN[v]){S.push(e);child++;int lowv=Tarjan(v,u);lowu=min(lowu,lowv);if(lowv>=DFN[u]){iscut[u]=1;block++;G[block].clear();while(1){Edge x=S.top();S.pop();if(Belong[x.from]!=block){G[block].push_back(x.from);Belong[x.from]=block;}if(Belong[x.to]!=block){G[block].push_back(x.to);Belong[x.to]=block;}if(x.from==u&&x.to==v)break;}}}else if(DFN[v]<DFN[u]&&v!=fa){S.push(e);lowu=min(lowu,DFN[v]);}}if(fa<0&&child==1)iscut[u]=0;return lowu;}void find_bcc(int l, int r){memset(DFN,0,sizeof(DFN));memset(iscut,0,sizeof(iscut));memset(Belong,0,sizeof(Belong));dfs_clock=block=0;for(int i=l;i<=r;i++) if(!DFN[i])Tarjan(i,-1);}void init(){ memset(head, -1, sizeof head); edgenum = 0;}
0 0
- 点双连通模版 求割点,点双缩点
- 边双连通模版
- 割点 桥 双连通分量模版
- 点双连通 练习
- HDU 4738 双连通模版题
- hdu 3749 点双连通
- hdu 3394(点双连通)
- POJ 2942 点双连通
- hdu 5739(点双连通)
- HDU 5739(点双连通)
- poj 2942 双连通 点双连通 边双连通 奇圈
- 无向图的双连通块(点的双连通)&&边的双连通算法
- poj 2942(点双连通+判奇圈)
- 【图论】割点、桥、双连通
- HDU 5739 (点双连通 树DP)
- 无向图点双连同分量BCC模版(LRJ)
- 边双连通分量模版
- 割点、桥、点双连通、边双连通、强连通 题目
- [经典]Linux内核中ioremap映射的透彻理解
- 黑马程序员_异常
- jsoup 学习笔记
- delphi 7编写的代码查看编辑器对注释的着色
- Opencv鼠标绘图程序
- 点双连通模版 求割点,点双缩点
- Rtmp协议简单分析(二)——协议交互过程
- 在VirtualBox中安装QTP10破解报CRC ERROR!
- CareerCup Eliminate all ‘b’ and ‘ac’ in an array of characters
- IOCP完成端口资料整理——"高大上",够全,够详细
- JavaMailSendTest
- Opencv轮廓检测
- innerText
- 集训记录