无向图边双联通分量 tarjan 模板
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
const int MAXM = 500005;
int n, m;
int fir[MAXN], nxt[MAXM<<1], to[MAXM<<1], cnt = 1;
int low[MAXN], dfn[MAXN], stk[MAXN], scc[MAXN], scccnt, indx, tmr;
inline void Add(int u, int v) { to[++cnt] = v; nxt[cnt] = fir[u]; fir[u] = cnt; }
inline void tarjan(int u, int ff)
{
    dfn[u] = low[u] = ++tmr; stk[++indx] = u;
    for(int i = fir[u]; i; i = nxt[i])
        if(!dfn[to[i]]) tarjan(to[i], i), low[u] = min(low[u], low[to[i]]);
        else if((i^1) != ff) low[u] = min(low[u], dfn[to[i]]);
    if(low[u] == dfn[u])
    {
        scccnt++;
        do scc[stk[indx]] = scccnt;
        while(stk[indx--] != u);
    }
}
int main()
{
    int x, y;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++) scanf("%d%d", &x, &y), Add(x, y), Add(y, x);
    for(int i = 1; i <= n; i++) if(!dfn[i]) tarjan(i, -1);
}
边双联通分量是存点 点双联通分量
无向图边双联通分量 tarjan 模板的更多相关文章
- 『Tarjan算法 无向图的双联通分量』
		
无向图的双连通分量 定义:若一张无向连通图不存在割点,则称它为"点双连通图".若一张无向连通图不存在割边,则称它为"边双连通图". 无向图图的极大点双连通子图被 ...
 - poj-3177(并查集+双联通分量+Tarjan算法)
		
题目链接:传送门 思路: 题目要将使每一对草场之间都有至少两条相互分离的路径,所以转化为(一个有桥的连通图至少加几条边才能变为双联通图?) 先求出所有的桥的个数,同时将不同区块收缩成一个点(利用并查集 ...
 - Codeforces 732F [边双联通分量][tarjan]
		
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一个无向图.现在要求给这个无向图的边加上方向. 定义f(x)为从x点出发能够到达的点的数目. 使得MIN(f(x))最大. 思路: 先tarja ...
 - Tarjan 强连通分量 及 双联通分量(求割点,割边)
		
Tarjan 强连通分量 及 双联通分量(求割点,割边) 众所周知,Tarjan的三大算法分别为 (1) 有向图的强联通分量 (2) 无向图的双联通分量(求割点,桥) ...
 - Spoj 2878 KNIGHTS - Knights of the Round Table | 双联通分量 二分图判定
		
题目链接 考虑建立原图的补图,即如果两个骑士不互相憎恨,就在他们之间连一条无向边. 显而易见的是,如果若干个骑士在同一个点数为奇数的环上时,他们就可以在一起开会.换句话说,如果一个骑士被一个奇环包含, ...
 - 图连通性【tarjan点双连通分量、边双联通分量】【无向图】
		
根据 李煜东大牛:图连通性若干拓展问题探讨 ppt学习. 有割点不一定有割边,有割边不一定有割点. 理解low[u]的定义很重要. 1.无向图求割点.点双联通分量: 如果对一条边(x,y),如果low ...
 - 大白书中无向图的点双联通分量(BCC)模板的分析与理解
		
对于一个无向图,如果任意两点至少存在两条点不重复(除起点和终点外无公共点)的路径,则这个图就是点双联通. 这个要求等价于任意两条边都存在于一个简单环(即同一个点不能在圈中出现两次)中,即内部无割点. ...
 - Tarjan总结(缩点+割点(边)+双联通+LCA+相关模板)
		
Tarjan求强连通分量 先来一波定义 强连通:有向图中A点可以到达B点,B点可以到达A点,则称为强连通 强连通分量:有向图的一个子图中,任意两个点可以相互到达,则称当前子图为图的强连通分量 强连通图 ...
 - [J]computer network tarjan边双联通分量+树的直径
		
https://odzkskevi.qnssl.com/b660f16d70db1969261cd8b11235ec99?v=1537580031 [2012-2013 ACM Central Reg ...
 
随机推荐
- [SOJ #687]双生串(2019-11-6考试)/[hdu5431]AB String
			
题目大意 把所有仅包含\(AB\)的字符串按字典序排列,给你一个仅包含\(AB\)的字符串\(S\),然后有\(Q\)个问题,第\(i\)个问题给你\(k_i\),求不是\(S\)的子串中,第\(k_ ...
 - PowerBI开发 第四篇:DAX 表达式基础
			
DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...
 - C# - Array.Sort()方法
			
Array类简介 Array类是C#中所有数组的基类.我们常用的[]声明数组即为Array类的语法,我们可通过Array类提供的各种方法对C#中数组进行操作.最典型的就是数组排序 Array.Sort ...
 - Java 8 HashMap 源码解析
			
HashMap 使用数组.链表和红黑树存储键值对,当链表足够长时,会转换为红黑树.HashMap 是非线程安全的. HashMap 中的常量 static final int DEFAULT_INIT ...
 - SQL Server SSIS中的变量使用表达式后,就无法更改其值了
			
在SQL Server SSIS中,我们可以为变量定义初始值和表达式,其实SSIS的变量定义为表达式后我们就无法更改变量的值了,我们来做如下实验: 首先我们在SSIS包中定义一个String类型的变量 ...
 - Matlab解释器模式
			
解释器模式(Interperter),给定一个语言,定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,实际开发中EL表达式或者正则表达式的解释器就是采用这种设计模式.其模式结构如下图.本文使 ...
 - Ueditor 关于视频上传相关问题
			
!!!每次改动后记得,清除一下浏览器缓存再试 !!! 4点: 1.修复编辑时视频不能预览问题: 2.插入视频的时候.在预览的窗口提示 “输入的视频地址有误,请检查后再试!” 3.ueditor ...
 - 编写可维护的JavaScript-随笔(一)
			
一.基本的格式化 1. 缩进层级 a) 制表符缩进 i. 好处:制表符和缩进层级是一对一的关系是符合逻辑的,文本编辑器可以配置制表符的展示长度,可以随意调节 ii. ...
 - 28、IE报vuex requires a Promise polyfill in this browser问题解决
			
解决方法第一步: 安装 babel-polyfill . babel-polyfill可以模拟ES6使用的环境,可以使用ES6的所有新方法 npm install --save babel-polyf ...
 - 安装socketio出现module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 错误
			
安装socketio出现module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 错误 执行: pip install --u ...