【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 先求出来强连通分量。 每个联通分量里面,显然在联通块的尽头(没有出度)放一个捕鼠夹就ok了 【代码】 cpp include using namespace std; define lson l,m,rt= b;i ) define mp ...
分类:
其他好文 时间:
2019-04-06 15:31:01
阅读次数:
190
P5241 序列 挺神仙的一题 看看除了dp好像没什么其他办法了 想着怎么构个具体的图出来,然鹅不太现实。 于是我们想办法用几个参数来表示dp数组 加了几条边肯定要的吧,于是加个参数$i$表示已加了$i$条边 这显然是不够的。于是我们又想:强连通分量.....连通块....... 于是加个$j$表示 ...
分类:
编程语言 时间:
2019-04-06 12:28:13
阅读次数:
241
一眼题,要跑强连通分量 那就乖乖的打一边tarjan了,然后该怎么办呢 记录缩点后的图,并记录这个图上每个点的入度和出度 因为,如果一个点入度为零,那么就说明没有任何点跟他连接,则必须把它当成母点 反之如果出度为零,证明这个点没有办法跑出去,那么就需要当成母点,记录即可 比较答案即可 ...
分类:
其他好文 时间:
2019-03-30 18:40:31
阅读次数:
152
题意和思路看这篇博客就行了:https://www.cnblogs.com/cjyyb/p/10507937.html 有个问题需要注意:对于每个scc,只需要考虑进入这个scc的时间即可,其实和从哪个点进没有关系,因为scc内每个点都可以互相到达,所以只需记录时间就囊括了所有的情况,比如时间3从1 ...
分类:
其他好文 时间:
2019-03-20 00:40:36
阅读次数:
193
关于Tarjan算法 梗概 tarjan算法有两种(我了解的),一种是用来求强连通分量的,另一种是关于割点和桥的问题。 根据机房大佬HL说过,这两种算法是互相独立的,只是代码很像。 强连通分量问题 关于这类tarjan算法,我了解到的主要的一个应用就是缩点。 "例题传送门" 思路 首先,如果我们考虑 ...
分类:
其他好文 时间:
2019-03-19 21:37:32
阅读次数:
133
文末有福利。 Tarjan是通过搜索树和压栈完成的,维护两个东西:dfn[i](时间戳)、low[i](通过搜索树外的边i(返祖边),节点能到达的最小节点的时间戳)。 跑完Tarjan,缩点,可以得到DAG图(有向无环图),可以再建图或统计入度出度。 在有向图中,可以找强连通分量SCC(极大强联通子 ...
分类:
其他好文 时间:
2019-03-09 23:59:47
阅读次数:
294
/* 强连通分量内的点可以互相传送,可以直接缩点 缩点后得到一棵树 第一问的答案是零入度点数量, 第二问: 加多少边后变成强连通图 树上入度为0的点有p个,出度为0的点为q,那么答案就是max(p,q) 如果缩点后是一个点,答案就是0 */ #include #include #include #i... ...
分类:
其他好文 时间:
2019-03-02 22:24:45
阅读次数:
183
Kosaraju算法 适用范围及时间复杂度 线性时间算法,找一个有向图的强连通分量(分量中所有点都是连通的)。 算法原理 首先有一个定义,名曰反图。何为反图?即将图中所有边反向操作。 上图样例即为一对反图。在整副图中,有三个强连通分量,即:1 2 5,3,4.如果把这副图所有边反向后,得到的同样是三 ...
分类:
编程语言 时间:
2019-03-02 10:42:06
阅读次数:
633
题目链接 "P3387 【模板】缩点" 解题思路 这几天搞图论,好有趣hhh,多写几篇博客。 上次学$Tarjan$求割点,这次缩点。 思路大概是多一个栈和染色的步骤,每次$Tarjan$的时候把点入栈,如果某个点(比较像割点但不完全是)的$DFS$子树都搜不到它祖宗,那么接下来进行的遍历操作必然与 ...
分类:
其他好文 时间:
2019-02-27 16:15:32
阅读次数:
190
强连通分量 定义:有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连 ...
分类:
其他好文 时间:
2019-02-25 18:50:51
阅读次数:
160