tarjan算法求联通块中求割点和割边
来源:互联网 发布:人工智能和物联网区别 编辑:程序博客网 时间:2024/06/04 08:41
来自hiho的第五十二周,参考链接:http://hihocoder.com/contest/hiho52/problem/1
//tarjan中可见dfs_pos,low数组不需要初始化//如果有多个联通分块,那么就要枚举每个未访问过的点进行tarjan,进行tarjan前先将fa[i] = -1//这里的se为set,存放割点;edge为vector<pair<int,int> >,存放割边void tarjan(int u){int num_son = 0;//以当前点为树根的子树的个数vis[u] = 1;dfs_pos[u] = low[u] = ++jishu;//dfs_pos为dfs序,low[u]是dfs序最小的祖先(没有则为自己)for(int i = head[u];~i;i = e[i].nex){int v = e[i].v;if(!vis[v]){num_son++;fa[v] = u;//fa是父亲tarjan(v);low[u] = min(low[u],low[v]);//递归求dfs序最小的的祖先if(fa[u] == -1 && num_son > 1)//若当前节点没有父亲且有两个或两个以上子树,则这个点必为割点se.insert(u);if(fa[u] != -1 && low[v] >= dfs_pos[u])//若当前点存在父亲,且他的儿子中没有回边连到u或者u的祖先中,此点为割点se.insert(u);if(low[v] > dfs_pos[u])//他的儿子没有回边连到u的祖先中edge.push_back(pii(min(u,v),max(u,v)));}else if(v != fa[u])//如果拜访到已经被访问的点low[u] = min(low[u],low[v]);}}
0 0
- tarjan算法求联通块中求割点和割边
- Tarjan算法求桥和割点
- 求桥和割点的Tarjan算法
- tarjan算法应用之割边和割点
- hihoCoder1183 tarjan算法应用之割边和割点
- 用Tarjan算法求无向连通图割点&&割边
- tarjan算法之 割边,割点
- Tarjan算法求BCC(无向图连通块、割边、割点)
- 超详细Tarjan算法总结,求强连通分量,割点,割边,有重边的割边
- 算法笔记(二):tarjan 算法求强联通分量
- poj3177-tarjan求桥/割边
- tarjan算法--求无向图的割点和桥
- tarjan算法--求无向图的割点和桥
- Tarjan算法--求无向图的割点和桥
- 割点和桥---Tarjan算法
- 求有向图强联通分量--Tarjan算法
- 关于tarjan算法的一些理解(割边和割点)
- Tarjan算法求割,桥,块(点双连通分支),边双连通分支总结
- 不知所谓
- 《深入浅出struts2》--第二十四章,Tiles插件
- 达内学习日志Day05(下):循环嵌套和数组的练习(一)
- HDOJ1213 How Many Tables(并查集)
- 同时查找数组中最大和最小值
- tarjan算法求联通块中求割点和割边
- POJ 3254Corn Fields
- bugzilla中bug的状态变更
- 视频播放器ckplayer,以下是连续播放的代码,
- Builder(建造者)设计模式
- 关于类里面依赖,聚合,继承之间的关系
- 怎么计算数组中实际元素的个数?
- POJ 1182 食物链(并查集+逻辑关系)
- hdu1176 免费馅饼 ( 数塔(DP))