[学习笔记]tarjan求割边
Posted Aireen Ye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[学习笔记]tarjan求割边相关的知识,希望对你有一定的参考价值。
上午打模拟赛的时候想出了第三题题解,可是我不会求割边只能暴力判割边了QAQ
所以,本文介绍求割边(又称桥).
的定义同求有向图强连通分量.
枚举当前点的所有邻接点:
1.如果某个邻接点未被访问过,则访问,并在回溯后更新
2.如果某个邻接点已被访问过,则更新
对于当前节点,如果邻接点中存在一点满足(向上无法到达及祖先)说明为一条割边.
inline void tarjan(int u,int fa){ dfn[u]=low[u]=++cnt; for(int i=g[u];i;i=e[i].nxt) if(!dfn[e[i].to]){ tarjan(e[i].to,u); low[u]=min(low[u],low[e[i].to]); if(low[e[i].to]>dfn[u]) cut[e[i].n]=true; } else if(e[i].to!=fa) low[u]=min(low[u],dfn[e[i].to]); }
以上是关于[学习笔记]tarjan求割边的主要内容,如果未能解决你的问题,请参考以下文章
ZOJ Problem - 2588 Burning Bridges tarjan算法求割边