tarjan
WePlayDirty
emmmmmmm
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj3694 Network
给你一张连通无向图,向图中加Q次边,问你每次加边后,图中有几条割边。是可以有重边的,比如原图中边(1,2)是一条割边,再加一条边(1,2) ,就消除掉了一条割边。但是这个题有点别扭,加边的时候会有重边,一开始建图的时候也会有重边,但是建图时不考虑重边(去重)也能AC,比如3 41 22 31 22 321 22 3这组数据,结果感觉应该是0 0,但是用tarjan+lca原创 2016-07-26 09:38:46 · 2591 阅读 · 0 评论 -
tarjan算法
须知概念:Dfs搜索树,回边,交叉边(无向图的dfs树不存在交叉边);dfn[u] :u的dfs序low[u] :从u或u的子孙出发,通过回边可以到达的最小的dfs序 对于Tarjan算法中,我们得到了dfn和low两个数组,low[u]:=min(low[u],dfn[v])——(u,v)为回边,v不是u的子树;low[u]:=min(low[u],low[v])——原创 2016-04-13 21:21:51 · 3343 阅读 · 0 评论 -
poj2186 Popular Cows(强连通分量tarjan)
题中给出一张有向图,不保证图连通,如果对于某个点,其他点都有至少一条路径能到达该点,该点就是符合要求的( Popular Cows),问图中有多少这样的点。解法:求强连通分量,对强连通分量缩点,缩点后是一棵树,如果出度为0的缩点个数大于1,则符合要求的点为0个,否则出度为0的缩点(强连通分量)包含的点的个数就是答案。求强连通分量时和双连通分量时,tarjan算法还是不同的!无向图中原创 2016-07-29 09:21:36 · 2329 阅读 · 0 评论 -
poj1523 求割点割边
求割点点u是割点的充分条件:1. 如果u是dfs树的根,则u至少有两个子女。2. 如果u不是dfs树的根,则它至少有一个子女w,从w出发,不可能通过和w、w的子孙相连的回边到达u的祖先。 u是割点的充要条件是:u或则是具有两个以上子女的深度优先生成树的根,或则虽然不是根,但它有一个子女w,使得low[w]>=dfn[u]。 求割边有两种判断方法:1. 当点u的子原创 2016-04-13 21:10:18 · 2727 阅读 · 0 评论 -
poj3352 Road Construction 缩点
有时根据问题的需要,要把边双连通分量抽象为一个点,这就叫缩点。 缩点的根据也是low值;同一边双连通分量的点,low值相同,因为对于该边双连通分量dfs树上的根节点u和其子孙节点v,它们之间除了有一条dfs树边组成的路径之外,肯定还有一条包含回边的路径,所以每个点v都能通过一条非dfs树上的路径到达u点,即所有的low[v]=u; 经过缩点后的无向图是一棵树(树的每一条边都是割边)原创 2016-04-13 21:15:17 · 2458 阅读 · 1 评论
分享