[模板]tarjan——最后通牒
这么久了我还是不会板子,你们随便笑话我吧。
再不会打我实在是无能为力了。
这篇博客写的像个智障一样。。。写它的目的就是自嘲?
才不是,为了方便查阅,因为我真的记不住。
对于割边,要存储该点入边的编号,因为更新low时不能沿着反向边爬回去。
遍历没走过的儿子时判定:如果儿子的low大于该点的dfn,则两点之间的路为割边。
对于割点,表达式为low[son]>=dfn[father].而对于根节点,必须有至少2个儿子满足条件时才能说根是割点。
从一个节点扫到的所有点都可以更新low值。
边双,就是割掉所有的割边之后图中剩下的联通分量。
缩点时把所有在同一个edcc里的合并,用割边连边即可。得到一棵树。
点双,dfs时使点入栈,在判割点时一旦满足条件,弹栈直到这个儿子弹出,再把父节点加入构成vdcc。
但是对于根节点是不是割点的判定没有变化。
缩点时,因为一个割点可能包含于多个vdcc,所以把割点作为中转站,把割点与其所在的vdcc连边,得到一棵树。
对于有向图强联通分量,也是维护了一个栈,dfs到点时加入。
搜索到在栈里的点(祖先)时更新low。如果回溯前dfn==low那么不断弹栈直到本节点弹出构成一个scc。
剩下的边会把图变为DAG,是有向无环图,接下来要拓扑排序而不是dfs!!
[模板]tarjan——最后通牒的更多相关文章
- 模板——Tarjan
#include <cstdio> #include <cstring> #include <iostream> #include <vector> u ...
- [模板]tarjan求强连通分量
大约是今年4月学的算法了,后来5月的时候做题还写了一个退化的tarjanQAQ. 时间复杂度:O(n+m) 用途:有向图缩环 #include<set> #include<cmath ...
- 算法模板——Tarjan强连通分量
功能:输入一个N个点,M条单向边的有向图,求出此图全部的强连通分量 原理:tarjan算法(百度百科传送门),大致思想是时间戳与最近可追溯点 这个玩意不仅仅是求强连通分量那么简单,而且对于一个有环的有 ...
- [模板] tarjan/联通分量/dfs树
//to update 边的分类 有向图边分为四类: 树边, 前向边, 返祖边(后向边), 横叉边. 上图: 判定 有向图 对图进行dfs, 不考虑已经遍历过的点, 得到dfs序 \(dfn_i\). ...
- [模板]tarjan缩点+拓扑排序
题目:给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 题目简述:先t ...
- hdu2586(lca模板 / tarjan离线 + RMQ在线)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意: 给出一棵 n 个节点的带边权的树, 有 m 个形如 x y 的询问, 要求输出所有 x, ...
- 求无向图的割点和桥模板(tarjan)
一.基本概念 1.桥:若无向连通图的边割集中只有一条边,则称这条边为割边或者桥 (离散书上给出的定义.. 通俗的来说就是无向连通图中的某条边,删除后得到的新图联通分支至少为2(即不连通: 2.割点:若 ...
- 模板—tarjan求割边
int dfn[MAXN],low[MAXN],cnt; void tarjan(int x,int edg) { low[x]=dfn[x]=++cnt; for(int i=f(x);i;i=n( ...
- 模板—tarjan求割点
int dfn[MAXN],low[MAXN],cnt,root; bool iscut[MAXN]; void tarjan(int x) { dfn[x]=low[x]=++cnt; ; for( ...
随机推荐
- 【mybatis】1mybatis下载、配置与初步使用
一.mybatis历史: 额,学习一门新事物时了解一下它的历史能在脑中形成一个大致的轮廓...进入正题... mybatis以前叫做ibatis,ibatis是Apache旗下的产品,在2010年时g ...
- markdown + 七牛云,让写文更容易
常常写博文的人, 总有这样的烦恼: * 文章格式问题,各种文本编辑器格式不统一,在一处写好的文章复制到其他编辑器中格式错乱 * 图片问题,在不同的平台的图片需要重复上传,如果多平台发布很繁琐 由于这样 ...
- springboot结合mybatis
idea中新建springboot项目 pom.xml依赖部分如下 <dependencies> <dependency> <groupId>org.springf ...
- .NetCore WebApi —— Swagger版本控制
目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...
- Python3程序设计指南:01 过程型程序设计快速入门
大家好,从本文开始将逐渐更新Python教程指南系列,为什么叫指南呢?因为本系列是参考<Python3程序设计指南>,也是作者的学习笔记,希望与读者共同学习. .py文件中的每个估计都是顺 ...
- HashMap底层数据结构详解
一.HashMap底层数据结构 JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树 关于HashMap基本的大家都知道,但是为什么数组的长度必须是2的指数次幂,为什么HashMap的加载 ...
- oracle查询当前用户下所有的表,包括所有的字段
oracle查询当前用户下所有的表,包括所有的字段 背景: 前两天接到一个需求,做一个展示所有表名,表备注,表数据,表字段数,点击查看按钮查看字段名和注释,支持导出. 在Oracle中,可用使用视 ...
- 我们一起学Python之——认识Python"规则"
前言: 开学后,跟预想的一样,开学第一天我们就开了Python,虽然之前早就预料到了,但对于一直学Java的我来说,内心还是有一些涟漪的.总归还是要接受的,还不如振作起来,认真对待.我决定从最简单并且 ...
- mysql 数据分析如何实现日报、周报、月报和年报?
以天为统计周期,是常见需求.周报.月报更是常见需求.长周期项目,甚至有年报需求.我已经掌握了mysql中按天统计,如何实现按年.按月.按周统计呢? 1.已掌握的技能:按天统计 实现以天为统计周期很简单 ...
- 小工具---将图片文件MultipartFile保存到指定目录
import org.springframework.web.multipart.MultipartFile; import java.io.IOException; /** 保存图片 @author ...