Tarjan算法及其应用 引入 tarjan算法可以在图上求解LCA,强连通分量,双联通分量(点双,边双),割点,割边,等各种问题。 这里简单整理一下tarjan算法的几个应用。 LCA http://www.cnblogs.com/mjtcn/p/6852646.html 强联通分量 有向图的 强 ...
分类:
编程语言 时间:
2017-11-25 14:18:28
阅读次数:
186
题目链接 正解:$tarjan$。 因为点数只有$3000$,而询问很多,所以我们可以把起点相同的询问一起搞。 注意到如果没有环,那么我们每次直接走字典序最小的那条边就行了。 如果有环那么就是不合法的情况,要输出$-1$,判环我们可以使用$tarjan$算法。每次先把点$x$的$low$设为$inf ...
分类:
其他好文 时间:
2017-11-08 20:51:29
阅读次数:
111
第一种是离线的Tarjan算法 这个代码跑的飞快但是不太好理解。。 还有一种用倍增的思想 emmm....这种比较好理解但是跑的有点慢... 如果不太懂...可以看这个/* */ 其实还有一种bfs版的玄学算法也安利一下 /* */ ...
分类:
其他好文 时间:
2017-11-04 19:28:53
阅读次数:
181
一.题目类型: 1.有向图的强连通分量: POJ1236 Network of Schools HDU1269 迷宫城堡 2.割点 & 割边: UESTC - 900 方老师炸弹 UVA315 Network UVA796 Critical Links HDU3394 Railway 3.无向图的边 ...
分类:
编程语言 时间:
2017-11-04 17:57:32
阅读次数:
209
以下摘自SHHHS Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度。 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称 ...
分类:
编程语言 时间:
2017-11-04 14:56:17
阅读次数:
234
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e4+5; 4 int cmp[N],dfn[N],tot,n,m;// dfn为节点的时间戳 5 bool vis[N]; 6 stack<int> st; 7 vect ...
分类:
编程语言 时间:
2017-10-27 20:35:34
阅读次数:
220
题意:就任意两个点能否到达; 解题思路:首先将图简化,比如假设图里有一个环,那么,这环内两个点肯定是能相互到达的,那么就不用考虑这环内的点了,很简单就想到用tarjan算法将环缩成一个点,然后就是判断缩完点后的图内任意两点能否互相到达了,能互相到达一定是有路径连接所有点的,就通过拓扑排序了,如果同一 ...
分类:
编程语言 时间:
2017-10-25 00:55:58
阅读次数:
275
【SinGuLaRiTy-1041】 Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 计算树的直径 LCA-返回a,b两点间的最短边权 LCA-tarjan算法 ...
分类:
其他好文 时间:
2017-10-16 00:17:55
阅读次数:
204
割点, 桥, 点双连通分量, 边双连通分量, 强连通分量 割点, 桥, 点双连通分量, 边双连通分量, 强连通分量这些概念都是原图的一个诱导子图. 割点, 桥, 双连通分量, 边双连通分量是无向图的相关概念, 而强连通分量是有向图的相关概念. $low$ 和 $dfn$ 的求法类似, $dfn[x] ...
分类:
编程语言 时间:
2017-10-10 10:07:00
阅读次数:
278
在有向图中,若两点至少包含一条路径可以到达,则称两个顶点强连通,若任意两个顶点皆如此,则称此图为强联通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 中间查找过程类似于深度优先搜索和并查集。 代码实现: ...
分类:
编程语言 时间:
2017-10-01 16:59:19
阅读次数:
241