P3387 【模板】缩点 题解 (Tarjan)

题目链接

P3387 【模板】缩点

解题思路

这几天搞图论,好有趣hhh,多写几篇博客。

上次学\(Tarjan\)求割点,这次缩点。

思路大概是多一个栈和染色的步骤,每次\(Tarjan\)的时候把点入栈,如果某个点(比较像割点但不完全是)的\(DFS\)子树都搜不到它祖宗,那么接下来进行的遍历操作必然与该点不能形成强连通分量,所以可以遇到\(low[p]==dfn[p]\)的点就把栈里面的东西全弹出来,染色表示这是一个强连通分量。

对于这个题,强连通分量之间再进行连边,记忆化搜索(类似树形DP)即可。

AC代码

#include
#include
#define N 100010
#define M 10010
#define min(a,b) (a>b?b:a)
#define max(a,b) (a

你可能感兴趣的:(P3387 【模板】缩点 题解 (Tarjan))