1. 割点:如果去掉一个点以及与它连接的边,该点原来所在的图被分成两部分(不连通),则称该点为割点。
文章来源:https://www.toymoban.com/news/detail-494979.html
2. 割边:如果去掉一条边,该边原来所在的图被分成两部分(不连通),则称该点为割边。
二,tarjan算法的应用
1. 变量说明:
① vector<int> edge[1000]; 存储边的信息
② bool cut[1000], bridge[1000][1000];
cut[x] == true 代表x为割点
bridge[x][y] == true代表边xy为割边
③ low[1000], dfn[1000], vis[1000]
2. 重要的两个数组 low 和 dfn:
① dfn:代表该节点被访问的次序。对于数组 dfn ,使用一个全局变量tim进行赋值,每访问到一个新节点 X ( 即vis[X]==0 ),则 dfn[X]=tim++;
② low[X]:代表 X节点与X节点的子树 能回溯到的 最小的dfn值。
什么是回边?什么时候需要进行low值的回溯更新?
初始化三个数组的值均为零
一开始按1->2->3->4访问,未遇到回边
可以发现,对于每一条回边,都是指向了dfn值更小的点。
在每个递归文章来源地址https://www.toymoban.com/news/detail-494979.html
到了这里,关于图论割点割边的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!