本博客参考了李煜东的《算法竞赛进阶指南》,大家要是觉得这篇文章写的不错请大家支持正版。豆瓣图书

我在之前的博客中讲解了搜索序时间戳,这次我们讲讲追溯值的概念。

追溯值:

设subtree(x)表示搜索树中,以X为根的子树。low[x]定义为一下节点的时间戳最小值:

1.subtree(x)中的节点。

2.通过1条不在搜素树上的边,能够到达subtree(x)的节点。

以上图为例。为了叙述简便,我们用时间戳代替节点编号。subtree(2)={2,3,4,5}。零位,节点1通过搜索树边的(1,5)能够到达subtree(2)。所以low[2]=1。根据定义拉算的话,首先应该让low[x]=dfn[x],然后考虑从x出发的每条边(x,y);

若在搜素树上x是y 的父节点,则令low[x]=min(low[x],low[y]).

若无向边(x,y)不是搜索树边,则令low[x]=min(low[x],dfn[y]).

该图中写出了追溯值的 图。

割边的判定法则:

无向边x---y如果是桥,当且仅当搜索树上存在x的存在y满足 dfn[x]<low[y],说明从y出发不可能通过非搜索树边回到x。也即是x--y是桥。

  1. //模板
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cstdio>
  5. #include <cstring>
  6. #include <vector>
  7. #include <map>
  8. #include <stack>
  9. using namespace std;
  10. const int N=100010;
  11. int head[N],ver[N*2],Next[N*2];
  12. int dfn[N],low[N],n,m,tot,num;
  13. bool brige[N*2];
  14. void add(int x,int y){
  15. ver[++tot]=y,Next[tot]=head[x],head[x]=tot;
  16. }
  17. void tarjan(int x,int inedge)
  18. {
  19. dfn[x]=low[x]=++num;
  20. for(int i=head[x];i;i=Next[i])
  21. {
  22. int y=ver[i];
  23. if(!dfn[y])
  24. {
  25. tarjan(y,i);
  26. low[x]=min(low[x],low[y]);
  27. if(low[y]>dfn[x])
  28. {
  29. brige[i]=brige[i^1]=1;
  30. }
  31. }
  32. else if(i!=(inedge^1))
  33. low[x]=min(low[x],dfn[y]);
  34. }
  35. }
  36. int main()
  37. {
  38. cin>>n>>m;
  39. tot=1;
  40. for(int i=1;i<=m;i++)
  41. {
  42. int x,y;
  43. scanf("%d %d",&x,&y);
  44. add(x,y);
  45. add(y,x);
  46. }
  47. for(int i=1 ;i<=n;i++)
  48. if(!dfn[i]) tarjan(i,0);
  49. int ans=0;
  50. for(int i=2;i<tot;i+=2)
  51. {
  52. if(brige[i])
  53. {
  54. printf("%d %d\n",ver[i^1],ver[i]);
  55. }
  56. }
  57. }

无向图求割(找桥)tarjan的更多相关文章

  1. UVA 315 :Network (无向图求割顶)

    题目链接 题意:求所给无向图中一共有多少个割顶 用的lrj训练指南P314的模板 #include<bits/stdc++.h> using namespace std; typedef ...

  2. poj 1144 Network(无向图求割顶数)

    题目链接:poj 1144 题意就是说有 n(标号为 1 ~ n)个网点连接成的一个网络,critical places 表示删去后使得图不连通的顶点,也就是割顶,求图中割顶的个数. 直接上大白书上的 ...

  3. 无向图的割点和桥 tarjan 模板

    #include <bits/stdc++.h> using namespace std; const int MAXN = 20005; const int MAXM = 100005; ...

  4. tarjan算法--求无向图的割点和桥

    一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不连通,则称该边为桥. 2.割点:无向连通图中 ...

  5. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  6. 求 无向图的割点和桥,Tarjan模板

    /* 求 无向图的割点和桥 可以找出割点和桥,求删掉每个点后增加的连通块. 需要注意重边的处理,可以先用矩阵存,再转邻接表,或者进行判重 */ const int MAXN = 10010; cons ...

  7. 求无向图的割点和桥模板(tarjan)

    一.基本概念 1.桥:若无向连通图的边割集中只有一条边,则称这条边为割边或者桥 (离散书上给出的定义.. 通俗的来说就是无向连通图中的某条边,删除后得到的新图联通分支至少为2(即不连通: 2.割点:若 ...

  8. Tarjan找桥和割点与点连通分量与边连通分量【未成形】

    之前只学了个强连通Tarjan算法,然后又摸了缩点操作: 然后今天在lightoj摸了一道模板题,是求所有桥的题: 然后发现,要把:割点,割点集合,双连通,最小割边集合(桥),点连通分量,边连通分量都 ...

  9. UVA 796 Critical Links(无向图求桥)

    题目大意:给你一个网络要求这里面的桥. 输入数据: n 个点 点的编号  (与这个点相连的点的个数m)  依次是m个点的   输入到文件结束. 桥输出的时候需要排序   知识汇总: 桥:   无向连通 ...

随机推荐

  1. 给Jekyll静态博客添加ScrollSpy博文大纲目录

    目录 内置TOC 添加ScrollSpy博文menu Scrollnav.js 使用方法❤ 最近又双叒把博客模板换成了Jekyll,Jekyll无论上手难度和修改难度都是目前所见流行模板中最低的(以无 ...

  2. win下youtube-dl 【ERROR: requested format not available】选下载视频质量的坑--【值得一看】

    需求说明(bug出处): 简单说:下载youtube的视频,嵌入翻译好的中文字幕. 详细说(可略过): 阿里的海外服务器需要布一个Web Service---用以接收国内(本地服务器)的请求, 然后用 ...

  3. SpringBoot 2.x 开发案例之前后端分离鉴权

    前言 阅读本文需要一定的前后端开发基础,前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx代理+Tomcat的方式有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微 ...

  4. java集合中的一个移除数据陷阱(遍历集合自身并同时删除被遍历数据)

    下面是网上的其他解释,更能从本质上解释原因:Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁. Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量 ...

  5. 007-函数-C语言笔记

    007-函数-C语言笔记 学习目标 1.[了解]函数的分类 2.[掌握]函数的声明定义和调用 3.[掌握]函数的形参和实参 4.[掌握]带返回值的函数 5.[掌握]全局变量和局部变量 6.[了解]注释 ...

  6. android学习笔记——计时器实现

    根据android疯狂讲义来写写代码,在博客里面将这些写过的代码汇总一下.实现的功能很简单:就是一个简单的计时器,点击启动按钮会开始计时,当计时到20秒时会自动停止计时. 界面如下: 界面代码: &l ...

  7. 02-css3之2D转换

    一.CSS3 -2D转换 转换(transform)可以实现元素的位移.旋转.缩放等效果.可以理解为变形. 1. 2D转换之移动translate 可以改变元素的页面中的位置,类似于定位. 1.1语法 ...

  8. ASE team work proposal

    Hi,我们是Azure Wrapper,欢迎来到我们的blog~我们将在这里记录下ASE课程的滴滴点点,美妙的旅程就要开始啦! 以下是每位队员提交的关于ASE 团队项目的提议: 朱玉影: 随着信息时代 ...

  9. 腾讯推出超强少样本目标检测算法,公开千类少样本检测训练集FSOD | CVPR 2020

    论文提出了新的少样本目标检测算法,创新点包括Attention-RPN.多关系检测器以及对比训练策略,另外还构建了包含1000类的少样本检测数据集FSOD,在FSOD上训练得到的论文模型能够直接迁移到 ...

  10. 13.create-react-app 构建的项目使用代理 proxy

    1. 正常运行 npm run eject 2. create-react-app 的版本在低于 2.0 的时候可以在 package.json 增加 proxy 配置, 配置成如下: "p ...