一、边双连通分量 边双连通分量 边双连通图:若一个无向图中的去掉任意一条边都不会改变此图的连通性,即不存在桥,则称作边双连通图。 边双连通分量:无向图中,删除任意边后仍然能连通的块。简记为“e-DCC”。(无向连通图的极大边双连通分量) 定理:一张无向连通图是“边双连通图”,当且仅当任意一条边都包含 ...
分类:
编程语言 时间:
2020-07-26 00:43:39
阅读次数:
83
``` //桥:删掉之后,图就不连通 //边双连通分量:极大的不含有桥的连通块 //不管删掉哪条边,都是连通的 //任意两个点之间,至少存在两条不相交的路径 //割点:如果把某个点和它所关联的所有边都删掉,图就不连通 //每一个割点至少属于两个双连通分量 //点双连通分量:极大的不包含割点的连通块 ... ...
分类:
其他好文 时间:
2020-05-08 18:31:37
阅读次数:
56
用到的算法 割边 + 缩点(得到边连通分量) + 朴素LCA 算法解析 + 无向图区分重边与同一条边的反方向: 对每一条边都用一个变量id来标识,一条无向边的两个方向用同一个id表示。 + 割边: ,即以点v为根的子树不能到达点u及以上,所以边uv为一条割边。 + 缩点(得到边双连通分量): 去掉桥 ...
分类:
其他好文 时间:
2020-04-26 13:55:29
阅读次数:
62
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 题意:给定一个无向图,问加一条边后最少的桥数是多少。 思路:找出边双连通分量后缩点成一棵树,然后我们要是加一条边使桥数最少,显然是去找树的直径,所以两边DFS去找树的直径即可,注意这里很坑,重边是 ...
分类:
其他好文 时间:
2020-04-11 23:30:08
阅读次数:
65
找出所有的桥出来,然后去掉桥即可 #include<cstdio> #include<iostream> using namespace std; const int MAXN=1e5,MAXM=1e6; struct Edge{ int from,to,nxt; }e[MAXM]; int hea ...
分类:
其他好文 时间:
2020-04-11 20:42:13
阅读次数:
73
1:POJ3353 Road Construction 此题没有重边 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 1010 #define M 2020 using n ...
分类:
其他好文 时间:
2020-04-11 20:10:18
阅读次数:
72
URL https://www.lydsy.com/JudgeOnline/problem.php?id=4229 简要题意 给一个无向图。 多次询问,每次删掉一条边,或者询问两个点是否在同一个边双连通分量内。 解法 倒着做。 先只保留所有操作结束后剩下的边,建出边双连通分量对应的森林。 然后倒序加 ...
分类:
其他好文 时间:
2020-02-11 09:44:42
阅读次数:
55
[TOC] 双连通分量 前置知识 "@FISHER_" —— "强连通分量" "@szTom" —— "割点和桥" 不抄代码的好习惯 基本概念 双连通分量又分点双连通分量和边双连通分量两种。若一个无向图中的去掉任意一个节点(一条边)都不会改变此图的连通性,即不存在割点(桥),则称作点(边)双连通图。 ...
分类:
其他好文 时间:
2020-01-26 19:05:14
阅读次数:
80
根据毛毛虫的定义,我们不难发现在双连通分量中的点我们都需要进行合并操作,所以我们先进行$tarjan$缩边双连通分量,使原图变成一棵树,缩点对答案产生的贡献为每个双连通分量的$size 1$ 然后我们继续考虑树的情况,发现,若要将树变成毛毛虫,最优的操作是保留叶子节点和除去叶子后的直径,于是我们记录 ...
分类:
其他好文 时间:
2020-01-23 00:22:38
阅读次数:
98
有向图的强连通分量:两个点如果能够相互到达,那么称他们相互强连通。若一个有向图的所有点对都是相互强连通的,那么称之为强连通图。一个有向图的极大强连通子图称为该图的强连通分量。 无向图的割点/边:去掉该点/边之后无向图的连通性发生改变的点/边称为割点/边。 无向图的点/边双连通分量:若一个无向图不存在 ...
分类:
其他好文 时间:
2019-11-25 20:23:12
阅读次数:
73