缩点

stack<int>q;
void tarjan(int u)
{
pre[u]=low[u]=++cnt;
q.push(u);
vis[u]=1;
for(int i=head[u];i;i=nxt[i])
{
int y=to[i];
if(!pre[y])
{
tarjan(y);
low[u]=min(low[u],low[y]);
}
else if(vis[y])
{
low[u]=min(low[u],pre[y]);
}
}
if(low[u]==pre[u])
{
num++;
int temp;
do{
temp=q.top();
q.pop();
vis[temp]=0;
id[temp]=num;//缩出来的点
sz[num]++;//每一个缩点的大小
}while(u!=temp);
}
}

割点

void tarjan(int u)
{
pre[u]=low[u]=++cnt;
int now=0;
for(int i=head[u];i;i=nxt[i])
{
int y=to[i];
if(!pre[y])
{
tarjan(y);
low[u]=min(low[u],low[y]);
if(low[y]>=pre[u])//如果u的访问时间比y最早返回的点的时间还靠前,那u被割了y一定不连通
{
now++;
if(u!=root||now>1)
vis[u]=1;//被标记的即割点
}
}
else
low[u]=min(low[u],pre[y]);
}
}

割边

void tarjan(int u,int fa)
{
pre[u]=low[u]=++cnt;
for(int i=head[u];i;i=nxt[i])
{
int y=to[i];
if(!pre[y])
{
tarjan(y,u);
low[u]=min(low[u],low[y]);
if(low[y]>pre[u])
{
if(u!=root||now>1)
vis[(u+1)>>1]=1;//无向图存了两条边
}
}
else if(y!=fa) low[u]=min(low[u],pre[y]);
}
}

点双连通分量

void tarjan(int u)
{
low[u]=pre[u]=++tim;
q.push(u);
if(u==root&&head[u]==0)
{
dcc_cnt++;
dcc[dcc_cnt].push_back(u);
return;
}//根节点特判
int cnt=0;
for(int i=head[u];i;i=nxt[i])
{
int j=to[i];
if(!pre[j])
{
tarjan(j);
low[u]=min(low[u],low[j]);
if(pre[u]<=low[j])
{
cnt++;
if(u!=root||cnt>1)vis[u]=true;
++dcc_cnt;//点双个数
int temp;
do{
temp=q.top();
q.pop();
dcc[dcc_cnt].push_back(temp);//每个点双的点
}while(temp!=j);
dcc[dcc_cnt].push_back(u);
}
}
else low[u]=min(low[u],pre[j]);
}
}

tarjan板子整理的更多相关文章

  1. Tarjan 【整理】

    Tarjan [整理] #include<bits/stdc++.h> using namespace std; class FastIO{ /* copyright (c) dgklr ...

  2. bzoj1051: [HAOI2006]受欢迎的牛(tarjan板子)

    1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6064  Solved: 3179[Submit][Sta ...

  3. $\rm{NOIp}$板子整理

    怎么说呢,整理这个的目的就是为了有个简约的\(list\),方便以后查阅,复习起来不至于太吃力. 并且--好像重温一遍所有,会更有一些新的认识.这也算是对我所学的一点整理了吧. 一.并查集的两种方式 ...

  4. Tarjan算法整理

    众所周知,tarjan是个非常nb的人,他发明了很多nb的算法,tarjan算法就是其中一个,它常用于求解强连通分量,割点和桥等.虽然具体实现的细节不太一样,但是大体思路是差不多的.先来说一下大体思路 ...

  5. [OI]省选前模板整理

    省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...

  6. tarjan强连通分量模板(pascal)

    友好城市 [问题描述]小 w 生活在美丽的 Z 国. Z 国是一个有 n 个城市的大国, 城市之间有 m 条单向公路(连接城市 i. j 的公路只能从 i 连到 j). 城市 i. j 是友好城市当且 ...

  7. 【最大权闭合子图 tarjan】bzoj1565: [NOI2009]植物大战僵尸

    dinic+tarjan板子练手题 Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其 中P ...

  8. 【tarjan 拓扑排序 dp】bzoj1093: [ZJOI2007]最大半连通子图

    思维难度不大,关键考代码实现能力.一些细节还是很妙的. Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于 ...

  9. tarjan缩点相关知识及代码

    emmm原谅我确实是找不到不用缩点的tarjan题才会想到自学一下缩点这个东西的.. 题目没有,只能自己出数据并手动模拟... 首先看一张图(懒得画,还是看输入数据吧,劳烦自行画图..) 7 9(n个 ...

  10. ACM基础板子

    新生赛以后就正式成为一名acmer啦 ~虽然没有打过比赛呜呜呜 要好好学算法,拿一个牌牌嘛~ 这里就记录算法学习情况,也怕自己偷懒,学一个就记录,看看长时间拖更就是在摸鱼,摸鱼和鸽子都是本质 ,加油! ...

随机推荐

  1. 【已解决】Hadoop_02 bash: start-all.sh: 未找到命令...Linux

    在配置hadoop时需要进到/etc/profile中修改hadoop路径 #配置Hadoop和Java环境 export JAVA_HOME=/JDK-1.8 #你自己Java的安装路径 expor ...

  2. 敏捷MVP面面观

    在过去的十年中,软件开发经历了许多阶段.从使流程敏捷高效到使用DevOps简化IT服务,已经有了许多突破,MVP是对软件开发过程产生了根本性影响的进步之一.本文将深入探讨MVP在软件开发中怎样起作用. ...

  3. #根号分治,动态规划#洛谷 5616 [MtOI2019]恶魔之树

    题目传送门 分析 最小公倍数最终一定会被表示成若干个质数指数幂的情况(1的情况就直接乘上二的次幂) 然后每个数的加入相当于对每个质数的指数取最大值,但是如果将每个质数的次数都表示出来状态数很多, 考虑 ...

  4. C#的无边框窗体改变大小解决方案 - 开源研究系列文章

    这次继续研究无边框窗体需要的功能.其实就是把有边框的默认窗体的一些功能进行实现而已.不过不同的人不一定相同的代码,所以笔者尽量用最简单有效的方法例子让读者能够直接对代码进行复用,以节省时间和人力.这次 ...

  5. 开放原子开源基金会OpenHarmony工作委员会主席侯培新寄语OpenAtom OpenHarmony分论坛

    2022开放原子全球开源峰会 OpenAtom OpenHarmony分论坛 万物互联,使能千行百业 7月27日 14:00  与您相约 OpenHarmony 工作委员会主席侯培新 寄语 OpenA ...

  6. win10上鼠标右键怎么进入cmd

    背景: 在win7上有个很好的功能,在文件夹空白区域,按住 " ctrl + 鼠标右键 " 可以直接打开 cmd 窗口 但是在win10上同样的操作方法,打开的窗口却是 power ...

  7. 20个Python 正则表达式应用与技巧

    本文分享自华为云社区<Python 正则表达式大揭秘应用与技巧全解析>,作者:柠檬味拥抱. Python 中的 re 模块是用于处理正则表达式的强大工具.正则表达式是一种用来匹配字符串的模 ...

  8. HTC Vive之Unity3d开发日记——手柄交互编程

    目录:        HTC Vive之Unity3d开发日记 You can fool all the people some of the time,and some of the people ...

  9. 架构设计|基于 raft-listener 实现实时同步的主备集群

    背景以及需求 线上业务对数据库可用性可靠性要求较高,要求需要有双 AZ 的主备容灾机制. 主备集群要求数据和 schema 信息实时同步,数据同步平均时延要求在 1s 之内,p99 要求在 2s 之内 ...

  10. SQL SERVER 数据库性能优化与管理从零基础到走两步系列(一)——性能计数器

    前辈大佬资料: 使用性能监视器找出SQLServer硬件瓶颈 在网络上苦苦流浪了近十几个小时,从百度到谷歌,从CSDN到博客园,从知乎到微信读书,看了无数本滥竽充数的书,读了无数篇夹生的技术文章,快下 ...