题目链接:https://www.luogu.org/problemnew/show/P3388
只要熟知割点的定义和性质就可以理解模板了。
割点:无向连通图中,去掉一个顶点及和它相邻的所有边,图中的连通分量数增加,则该顶点称为割点。
判断方法:
判断顶点U是否为割点,用U顶点的dnf值和它的所有的孩子顶点的low值进行比较,如果存在至少一个孩子顶点V满足low[v] >= dnf[u],就说明顶点V访问顶点U的祖先顶点,必须通过顶点U,而不存在顶点V到顶点U祖先顶点的其它路径,所以顶点U就是一个割点。对于没有孩子顶点的顶点,显然不会是割点。
要注意如果这个结点是祖先结点并且这个结点有两个以上的子树,则这个结点是割点。
有关博客:
https://www.luogu.org/blog/29354/su-dian-tarjan-post
https://www.cnblogs.com/nullzx/p/7968110.html
#include"stdio.h"
#include"string.h"
#include"vector"
#include"algorithm"
using namespace std;
int n,m;
int color[20010],dfn[20010],l